サポート » 使い方全般 » 関連の投稿について

  • 解決済 kurodan

    (@kurodan)


    すみません、助けてください。
    カスタムフィールドで任意の文字が一致する場合にページ上に関連商品として表示するように考えています。

    以前のご質問でヒントを戴いてネットで検索して得た情報を元に以下のようにしてみました。

    <h6">関連商品</h6>
    <?php
    	$kanren = get_field("関連商品", $post->ID);
    	$taxonomy  = 'product_cat';
    	$types     = get_the_terms( $post->ID, $taxonomy );
    	$typenames = array();
    	foreach( $types as $type ){
    	array_push( $typenames, $type->slug );
    }
    
    $exclude[] = get_the_ID();
    $args = array(
    
    	'posts_per_page' => -1,
    	'post__not_in' => $exclude,
    	'post_type' => 'product',
    	'meta_query' => array(
    		array(
    			'value' => get_field('関連商品'),
    			'compare' => '=',
    			'type' => 'CHAR',
    		)
    	),
            'tax_query' => array(
    		array(
    			'taxonomy' => $taxonomy,
     			'terms'    => $typenames,
    			'field'    => 'slug',
    			'operator' => 'IN'
    		),
    			'relation' => 'AND'
    	),
    );
    unset( $types );
    	$postslist = get_posts( $args );
    	foreach ( $postslist as $post ):
    	setup_postdata( $post );
    ?>
    
    <?php if(empty($kanren)): ?>
    関連商品はありません。
    <?php else:?>
    
    //関連商品を表示させる部分
    
    <?php break; endwhile; endif; ?>
    <?php endif; ?>
    <?php endforeach; wp_reset_postdata(); ?>

    やりたい事
    ・関連商品にそのページの商品は除外する。
    ・関連商品として紐づけさせる為の文字はHP上に表示される。
    ・関連商品のカスタフィールドが空白の場合は関連商品が無い旨の表示をする、または何も表示しない。

    条件を上記のようにしたいのですが、if(empty($kanren)):を加える前は関連商品のカスタフィールドが空白の商品が全て表示され、加えた後は関連商品はありません。が大量に表示されてしまいました。
    どこがおかしいのか教えて頂けませんでしょうか。
    よろしくお願い申し上げます。

1件の返信を表示中 - 1 - 1件目 (全1件中)
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「関連の投稿について」には新たに返信することはできません。