前提・実現したいこと
Wordpressの商品販売プラグイン Welcart で自作テーマを制作中です。
商品一覧ページ(categoryページ)で、カスタムフィールド数値を使い、ボタンクリックで、投稿(商品)の並べ替えが動作しません。
「新着・価格順(大)・価格順(小)」での並べ替えが希望です。
□ カスタムフィールドの数値は、抽出できています。
(カスタムフィールド数値で、通常の記事一覧ソートもできます。)
□ add_query_arg()でURLが変更される事も確認済みです。
□ Welcartではない通常のWordpressでも並び替え動作しません。
何が原因わからず、ほとほと困っております。どうかご教授を宜しくお願いします。
Categoryぺージの記述
PHP
1 <!-- 並替え用テキストボタン --> 2 <ul> 3 <li> 4 <a href="<?php echo add_query_arg( array('sort' => 'date','order' => 'ASC'), get_pagenum_link(1) ); ?>">新着順</a> 5 </li> 6 <li> 7 <a href="<?php echo add_query_arg( array('meta_key' => 'item_price','orderby' => 'meta_value_num','order' => 'DESC'), get_pagenum_link(1) ); ?>">価格順: 大</a> 8 </li> 9 <li> 10 <a href="<?php echo add_query_arg( array('meta_key' => 'item_price','orderby' => 'meta_value_num','order' => 'ASC'), get_pagenum_link(1) ); ?>">価格順: 小</a> 11 </li> 12 </ul> 13 </section> 14 15 <!-- 以下 商品一覧表示BOX --> 16 <article id="centerBox"> 17 <?php 18 $paged = get_query_var('paged') ? get_query_var('paged') : 1 ; //ページの判定 19 $category = get_the_category();//カテゴリ情報取得 定型文 20 $cat = $category[0]; //カテゴリ情報取得 定型文 21 $cat_slug = $cat -> slug;//カテゴリスラッグ取得(カテゴリ名だと日本語の場合があるからスラッグ) 22 23 $wp_query = new wp_query(array( 24 'category_name' => $cat_slug, 25 'posts_per_page' => 30, 26 'post_status' => 'publish', 27 'paged' => $paged 28 )); 29 ?> 30 <?php if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); usces_the_item(); ?> 31 32 <!-- 一覧用カラム --> 33 <table class="itemList"> 34 <tbody> 35 <tr> 36 <th> 37 <a href="<?php the_permalink() ?>"> 38 <?php usces_the_itemImage(0, 800, 800, $number = 0); ?> 39 </a> 40 </th> 41 </tr> 42 <tr> 43 <td> 44 <p class="item_name"> 45 <?php usces_the_itemName(); ?><b><?php if (usces_is_skus()) : ?></b></p> 46 <p class="price">¥ <?php usces_the_firstPrice(); ?> <b><?php usces_guid_tax(); ?></b> 47 </p> 48 <?php endif; ?> 49 <?php echo $post->the_excerpt; ?> 50 <!--カスタムフィールド値 取得テスト表示--> 51 <span><?php echo get_post_meta($post->ID, 'item_price', true); ?></span> 52 <!--カスタムフィールド値 取得テスト表示 end--> 53 </td> 54 </tr> 55 </tbody> 56 </table> 57 <?php endwhile; else: ?> 58 <?php endif; ?> 59 <!-- 一覧用カラム end --> 60 </article> 61 62<!-- 以下 ページャー用記述省略 -->
function.phpの記述
PHP
1/* ----- カスタムフィールドボックスを投稿管理画面で有効化 ----- */ 2//参考:https://fit-jp.com/customfield/ 3// 固定カスタムフィールドボックス 4function add_item_fields() { 5 add_meta_box( 'item_setting', '商品価格(並び替え用)', 'insert_item_fields', 'post', 'normal'); 6} 7add_action('admin_menu', 'add_item_fields'); 8 9function insert_item_fields() { 10 global $post; 11 echo '価格: <input type="text" name="item_price" value="'.get_post_meta($post->ID, 'item_price', true).'" size="50" /> <br>'; 12} 13 14function save_item_fields( $post_id ) { 15 if(!empty($_POST['item_price'])){ 16 update_post_meta($post_id, 'item_price', $_POST['item_price'] ); 17 }else{ 18 delete_post_meta($post_id, 'item_price'); 19 } 20} 21add_action('save_post', 'save_item_fields'); 22/* ----- カスタムフィールドボックスを投稿管理画面で有効化 end ----- */ 23 24/* ----- カスタムフィールド パラメーター有効化 ----- */ 25function add_meta_query_vars( $public_query_vars ) { 26 $public_query_vars[] = 'meta_key'; 27 $public_query_vars[] = 'meta_value_num'; 28 return $public_query_vars; 29} 30add_filter( 'query_vars', 'add_meta_query_vars' ); 31/* ----- カスタムフィールド パラメーター有効化 end ----- */
function補足:実際のfunction記述に改行余白は入れておりません。
バージョン
Wordpressバージョン 5.1.4
Welcartバージョン 1.9.25
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。