Woocommerce Meta_Query for Hidden Products



我使用的主题在主页上有一个自定义产品循环。除了在主页上显示"隐藏"产品外,一切都很棒。我提供了一些代码来修复它,但不断出现Parse错误。

index.php中的当前代码:

<?php if (of_get_option("cap_show_merch") == true){?>
    <?php //woocommerce check ?>
    <?php if (  in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) { ?>
        <h2><?php echo of_get_option("cap_merch_title"); ?></h2>
        <div class="preview-block">
            <?php
            global $product;
            $num = 0;
            $merch = new WP_Query( array(
            'posts_per_page' => 5,
            'post_type'      => array( 'product' )
            ) );
            if( $merch->have_posts() ) : while( $merch->have_posts() ) : $merch->the_post();
                $product = get_product();
                if ( $num == 0 ) : ?>
                    <div class="preview">
                        <div class="visual">
                            <?php if ( has_post_thumbnail() ) : ?>
                                <img src="<?php echo aq_resize( wp_get_attachment_url( get_post_thumbnail_id(), 'full' ), 473, 453, true );  ?>" width="473" height="453" alt="<?php the_title(); ?>" />
                            <?php else : ?>
                                <img src="<?php echo woocommerce_placeholder_img_src(); ?>" alt="Placeholder" />
                            <?php endif; ?>
                            <a href="<?php the_permalink(); ?>" class="mask"></a>
                            <?php woocommerce_template_loop_price(); ?>
                        </div>
                        <a href="<?php the_permalink(); ?>" class="caption"><?php the_title(); ?></a>
                    </div>
                <?php else : ?>
                    <?php if ( $num == 1 ) : ?>
                        <ul class="catalog">
                    <?php endif; ?>
                    <li>
                        <div class="visual">
                            <?php if ( has_post_thumbnail() ) : ?>
                                <img src="<?php echo aq_resize( wp_get_attachment_url( get_post_thumbnail_id(), 'full' ), 222, 193, true );  ?>" width="222" height="193" alt="<?php the_title(); ?>" />
                            <?php else : ?>
                                <img src="<?php echo woocommerce_placeholder_img_src(); ?>" alt="Placeholder" />
                            <?php endif; ?>
                            <a href="<?php the_permalink(); ?>" class="mask"></a>
                            <?php woocommerce_template_loop_price(); ?>
                        </div>
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </li>
                    <?php
                endif;
                $num++;
            endwhile;
            ?>
            </ul>
            <?php endif; wp_reset_postdata(); ?>
        </div><!--preview-block-->
    <?php } //woocommerce check?>
<?php } ?>

我在Wordpress论坛上问过这个问题,我的James Koster提供了这个代码。

'meta_query' => array(
array(
'key' => '_visibility',
'value' => array( 'catalog', 'visible' ),
'compare' => 'IN'
)
)

当我将它添加到"'post_type'=>array('product')"下的php中时,它看起来是这样的;

<?php
            global $product;
            $num = 0;
            $merch = new WP_Query( array( 
            'posts_per_page' => 5,
            'post_type'      => array( 'product' )
            'meta_query' => array(
                            array(
                                'key' => '_visibility',
                                'value' => array( 'catalog', 'visible' ),
                                'compare' => 'IN'
            ))));

但这会返回一个错误;

"分析错误:语法错误,第116行的/…/themes/destinlive/index.php中出现意外的T_CONSTANT_ENCAPSED_STRING,应为')'"

第116行是"'meta_query'=>数组("

我一点也不精通php,James也没有详细说明该把它放在哪里(我很感谢他的帮助),这让我花了几个小时尝试不同的配置,但都无济于事。现在我在这里寻求帮助。

提前感谢你的慷慨帮助。

'post_type' => array( 'product' ) 后缺少逗号