<!--ステータス---> <?php $buyz = SCF::get('item_buy'); foreach ($buyz as $buy) : if ( $buy == '売り切れ' ):?> <!-----> <div class="item_sta1">売り切れ</div> <!-----> <?php elseif ( $buy == '入荷待ち' ):?> <div class="item_sta2">入荷待ち</div> <?php else:?> <?php endif; ?> <?php endforeach; ?>
スマートカスタムフィールドで
チェックボックスでこうやって出来たが
一覧で入荷待ちは普通に表示したかったため却下
2択 販売中 売り切れ
とし
<!--ステータス---> <?php $sta = SCF::get('item_sta'); $buyz = SCF::get('item_buy'); //一個しかない項目だがチェックボックスがいいのでフォーチ foreach ($buyz as $buy) : ?> <?php endforeach;?> <?php if ( $sta == '売り切れ' ):?> <!-----> <div class="item_sta1">売り切れ</div> <!-----> <?php elseif ( $buy == '入荷待ち' ):?> <div class="item_sta2">入荷待ち</div> <?php else:?> <?php endif; ?>
こうして
mファンクション
//ショップ売れ切れ最後表示 //こっから本番 function SortArchive( $query ) { //管理画面スルー if ( is_admin() || ! $query->is_main_query() ) return; //こっから if ( $query->is_category() || $query->is_archive() || $query->is_tax() || $query->is_search() ) { $query->set( 'meta_key', 'item_sta' ); $query->set( 'orderby', array( 'meta_value' => 'DESC', 'date' => 'DESC' ) );//新しい デフォ return; } } add_action( 'pre_get_posts', 'SortArchive' );
タクソノミー絞り込み部分
ちなみmに絞り込みのときだけこのクエリポストが動作するコード
<?php $shashu = $_GET['shashu'];//urlにpostが渡されていればそれを取得(urlの例 → http://ドメイン/カテゴリスラグ/?area=新宿区) if($shashu){//入っていればクエリポスト投げる $cfKey = 'shashu';//カスタムフィールドのキー名 $args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => get_query_var( 'taxonomy' ), 'field' => 'slug', 'terms' => get_query_var( 'term' ), ),), 'meta_query' => array(//カスタムフィールドによる絞り込み array( 'key' => 'shashu',//カスタムフィールド名 'value' => $shashu,//$area,//カスタムフィールドの値 /* "compare" => "LIKE"*/ ), ), // 'posts_per_page' => 10,//1ページあたりの表示件数 'paged' => $paged, 'post_type' => 'shop', //売り切れステータスは後に表示&新しい投稿順 'meta_key' => 'item_sta', 'orderby' => array( 'meta_value' => 'DESC', 'date' => 'DESC' ) ); query_posts($args); } ?>
としてうまくいったが
こんどはyarppが売り切れを表示させたくないので
できないので却下
yarppはタクソノミータームIDを除外できるようなので
タクソノミーを作ってタームを作って
それをアドバンスカスタムフィールドで入れ込む位しかないかな。
状態tax で販売中と売り切れを作り
ドロップダウンにして
タクソノミーにも保存時反映ボタンチェックで
どうやらアドバンスのタームはタクソノミーに影響しながら
そのカスタムフィールドも値をもつようだ(array なのでフォーチしないといけない)
なのでメタバリューで一覧時売り切れは最後に表示されるが可能だ
入荷待ちは真偽にして
チェックを入れるようにしゅる
yarppのエクスクルードはterm_taxonomy_idという初めて聞く値で除外できるみたいで
<?php $staz = get_the_terms($post->ID, 'item_sta'); foreach ($staz as $sta) : endforeach;//状態タクスからタームをフォーチでまわしてnameでとりだして(1個だけだからこれでよし) echo $sta -> term_taxonomy_id; ?>
こいつで初めて取得した。タームIDとはちがうみたい
こっから完成したもの
アーカイブ用メインクエリ
//ショップ売れ切れ最後表示 //こっから本番 function SortArchive( $query ) { //管理画面スルー if ( is_admin() || ! $query->is_main_query() ) return; //こっから if ( $query->is_category() || $query->is_archive() || $query->is_tax() || $query->is_search() ) { $query->set( 'meta_key', 'item_sta_tax' ); $query->set( 'orderby', array( 'meta_value' => 'ASC', 'date' => 'DESC' ) );//新しい デフォ return; } } add_action( 'pre_get_posts', 'SortArchive' );
<!--ステータス---> <?php $staz = get_the_terms($post->ID, 'item_sta'); foreach ($staz as $sta) : endforeach;//状態タクスからタームをフォーチでまわしてnameでとりだして(1個だけだからこれでよし) echo $sta -> term_taxonomy_id; ?> <?php if ( $sta->name == '売り切れ' ):?> <!-----> <div class="item_sta1">売り切れ</div> <!-----> <?php elseif ( get_field('item_buy') == '入荷待ち' )://真偽ぼたんだはこれでよい?> <div class="item_sta2">入荷待ち</div> <?php else:?> <?php endif; ?>
画像のソールドアウト部分も同じ分岐
topはちょい違う
W60%とかなんで商品ページは大きく表示されるから画像大きめ
フォトギャラリーはでくくった部分がギャリャーになるから最後に入れても大丈夫だった
下記テンプレはコード省く
shop_roop.php shop_roop_box.php
<!--売り切れアイコン表示---> <?php $staz = get_the_terms($post->ID, 'item_sta'); foreach ($staz as $sta) : endforeach;//状態タクスからタームをフォーチでまわしてnameでとりだして(1個だけだからこれでよし) ?> <?php if ( $sta->name == '売り切れ' ):?> <div class="sold_icon"> <img src="/img/d_site/soldout.png" width="100%" alt="売り切れ"/> </div> <?php endif; ?>
/*売り切れとか*/ .item_sta1{ color:#dc0012; margin-bottom:5px;} .item_sta2{ margin-bottom:5px;} .sold_icon{ position: absolute; left: 0; right: 0; bottom: 20px; margin: auto; width: 63%; z-index: 1000; }
やっとこさYARPP
<?php yarpp_related(array( 'post_type' => array('shop', 'mycustompost'), 'show_pass_post' => false, // show password-protected posts 'past_only' => false, 'exclude' => array(199), 'weight' => array( 'body' => 2, 'title' =>2, 'tax' => array( 'shop_cat' => 2, )) // 'order' => 'score DESC'//載せる順番 // show only posts which were published before the reference post // 任意のテンプレートを利用する場合指定 //'template' => 'yarpp-template-xxxxxx.php', // either the name of a file in your active theme or the boolean false to use the builtin template )); ?>