Wordpress 区分来自 woocommerce 的实际页面和产品
Posted
技术标签:
【中文标题】Wordpress 区分来自 woocommerce 的实际页面和产品【英文标题】:Wordpress distinguish between actual pages and products from woocommerce 【发布时间】:2017-03-08 21:49:53 【问题描述】:我在搜索结果中区分产品和页面时遇到了一些问题。
这是我目前所拥有的
<?php if ( have_posts() ) : ?>
<?php if ( $post->post_type == 'product' ) : ?>
<div class="woocommerce">
<h2>Product results</h2>
<ul class="products cols-4">
<?php woocommerce_product_loop_start(); ?>
<?php woocommerce_product_subcategories(); ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; ?>
<?php woocommerce_product_loop_end(); ?>
</ul>
</div>
<?php endif; ?>
<?php if ( $post->post_type == 'page' ) : ?>
<h2>Page results</h2>
<?php while ( have_posts() ) : the_post(); ?>
<?php x_get_view( $stack, 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php else : ?>
<?php x_get_view( 'global', '_content-none' ); ?>
<?php endif; ?>
我已经到了让产品结果以我想要的方式显示的地步(所以它们都显示为默认的 woocommerce 布局)。但我似乎无法从“页面”结果中排除产品。 IE。所有产品也会显示在页面结果中。
例子:
产品结果
产品 1 - 产品 2 - 产品 3 - 产品 4
页面结果
第 1 页(产品 1,如上所示)
第 2 页(产品 2,如上所示)
第 3 页(产品 1,如上所示)
第 4 页(产品 2,如上所示)
我希望如此
if ( $post->post_type == 'page' )
只会返回实际页面(而不是产品)。但没有运气。
所以我的问题是,如标题所述,如何区分 wordpress 中来自 woocommerce 的实际页面和产品以获取搜索结果?
【问题讨论】:
【参考方案1】:在你的页面之前需要这样的东西,而 have_posts
<?php
global $wp_query;
$args = array_merge( $wp_query->query_vars, array( 'post_type' => 'page' ) );
query_posts( $args );
while ( have_posts() ) : the_post(); ?>
【讨论】:
谢谢!做到了。只是出于好奇,这如何使 while 有帖子循环只带出实际页面(并从 woocommerce 中排除产品)? 太棒了。 while have_posts 循环通过主循环。您需要使用 post_type 参数调整主循环参数,以仅拉出“页面”帖子,而不是其他帖子。这就是我的代码所做的。以上是关于Wordpress 区分来自 woocommerce 的实际页面和产品的主要内容,如果未能解决你的问题,请参考以下文章
来自 wordpress 的 REST API 调用中的服务不可用
php [wpo woocommerce] optimizacion woocommerce #woocommerce #wordpress
Wordpress:仅适用于 Woocommerce 品牌页面的摘录
Woocommerce / Wordpress 将按钮添加到页面