WP_Query在分类页面上显示品牌产品

时间:2018-12-04 作者:sot

我正在尝试在分类页面上打印某个品牌的所有产品。

我找到了wp\\U查询,但我无法打印该品牌的当前品牌名称来显示此页面中的所有产品。

在术语数组中放置什么来打印当前页面的品牌名称?

// get products
$args = array(
  \'post_type\'      => \'product\',
  \'posts_per_page\' => -1,
  \'tax_query\'      => array(
      array(
          \'taxonomy\' => \'pwb-brand\',
          \'field\'    => \'name\',
          \'terms\'    => array (\'NAME?????\')
        )
    )
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) : $loop->the_post();
        wc_get_template_part( \'content\', \'product\' );
    endwhile;
} else {
    echo __( \'not found anyhting.\' );
}
wp_reset_postdata();

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您可以获得查询的对象,但这仍然留下了一个未提及的问题,即您正在放弃主查询并执行第二个查询,从而使页面速度至少降低了2倍。分页也会因此而中断。

您可能见过有人警告您不要使用query_posts, 这就是为什么,使用WP_Query 同样的方法就是重新创建该函数的内部。

使用筛选器和操作执行此操作,请使用pre_get_posts 在WP进入数据库之前修改主post请求的操作。

e、 g.以下是一个排除id为的类别的示例1 从主页:

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( \'cat\', \'-1\' );
    }
}
add_action( \'pre_get_posts\', \'exclude_category\' );
因此,让我们用以下内容替换支票:

if ( $query->is_tax( \'pwb-brand\' ) && $query->is_main_query() ) {
并设置posts_per_page 价值,例如。

$query->set( \'posts_per_page\', -1 );
通过将此设置为-1 最坏的情况变得更糟,现在这个页面的速度和成本都没有上限。如此之慢,您可能会耗尽执行时间,或试图显示它的内存。

你可能会想,“但只有50种产品是永远不会发生的”,我会说,这是一个愚蠢的数字,你永远不会想到会达到,但永远不会-1/每件事

备选方案包括:

分页(pagination)延迟加载(lazy loading)无限滚动(infinite scroll)有些人显示所有内容是因为他们想ctrl+f 并且很容易找到产品,但这可以通过搜索框和带有名称的隐藏输入来完成post_type 以及价值product, 第二个是将分类设置为pwb-brand

相关推荐

如何在WordPress unctions.php中将短代码值传递到Head

我正在尝试为wordpress帖子上的图表创建一个快捷代码。到目前为止,我已经使用了短代码,我可以看到短代码值正在被传递,但我需要知道的是如何将这些值传递到Google图表,以便正确工作。以下是我目前掌握的代码:function chart_shortcode($atts) { $a = shortcode_atts( array( \'value1\' => \'\', \'value2\' => \'\', \'value