<!--ステータス--->
<?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
));
?>