1

in_array 関数に問題があると思われます。私はドキュメントを何度も読んでテストしましたが、常に同じことが追加されました

ここに作業コードがあります:

$tohide = '141'; 
$objterm = wp_get_object_terms($post->ID, 'product_cat');
global $catlist;
$catlist = array();
foreach ($objterm as $singleterm) {
    array_push($catlist, $singleterm->term_id);
}
if (!in_array($tohide,$catlist)) {
    woocommerce_get_template_part( 'content', 'product' );
}

そのコードはすべての項目を出力しますが、カテゴリ 141 を出力します...クールで正常に動作します...今、非表示にする項目として配列を取得するのが好きです

$tohide = array('141','134'); 
$objterm = wp_get_object_terms($post->ID, 'product_cat');
global $catlist;
$catlist = array();
foreach ($objterm as $singleterm) {
    array_push($catlist, $singleterm->term_id);
}
if (!in_array($tohide,$catlist)) {
    woocommerce_get_template_part( 'content', 'product' );
}

これは機能しません...すべてを出力します...非表示にしようとするアイテムをフィルタリングしないでください。

今問題は...配列にないすべてのアイテムを非表示にする方法です...私にはわかりません! 多分別のphp関数がそれをしますか?

4

1 に答える 1

1

使用できますarray_intersect

if(!array_intersect($tohide, $catlist)){
  ...
}

$tohide存在するすべての項目を含む配列を取得します$catlist(空の配列は false と評価されます)。

于 2013-02-26T01:01:42.030 に答える