当前位置: 首页 > 知识库问答 >
问题:

通过WP_查询中的自定义分类术语值获取Woocommerce产品

殳勇
2023-03-14

我正在开发一个插件,它将放在我的woocommerce产品侧栏中。我需要的是,给定产品id/对象,它将找到2个具有我以前创建的相同自定义分类法的产品。

通过这段代码,我得到了产品中使用的术语列表,其中“colline”是自定义分类法:

get_the_term_list( $product->id, 'collane', '<div style="direction:rtl;">', '</div>', '' ); 

问题是我不知道如何获取自定义分类id,以及如何根据自定义分类对其进行过滤。

我已经使用WP_Query查找同一类别的产品,代码如下:

$args = array(
'post_type'             => 'product',
'post_status'           => 'publish',
'ignore_sticky_posts'   => 1,
'posts_per_page'        => $atts['limit'],
'tax_query'             => array(
    array(
        'taxonomy'      => 'product_cat',
        'field' => 'term_id', //This is optional, as it defaults to 'term_id'
        'terms'         => $cat_id,
        'operator'      => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
    ),
    array(
        'taxonomy'      => 'product_visibility',
        'field'         => 'slug',
        'terms'         => 'exclude-from-catalog', // Possibly 'exclude-from-search' too
        'operator'      => 'NOT IN'
    )
)
);

如何更改代码以获得所需的分类id/对象,然后在WP_查询中使用它?

共有1个答案

孔理
2023-03-14

您应该尝试以下WP\u查询$args,该查询将允许从相同的“collane”自定义分类中获取两个与当前产品具有相同术语的其他产品。

我正在使用wp\u get\u post\u terms()WordPress函数从特定的自定义分类中获取post(这里是“产品”自定义post类型)中的术语ID。

守则:

$taxonomy = 'collane'; // The targeted custom taxonomy

// Get the terms IDs for the current product related to 'collane' custom taxonomy
$term_ids = wp_get_post_terms( get_the_id(), $taxonomy, array('fields' => 'ids') ); // array

$query = new WP_Query( $args = array(
    'post_type'             => 'product',
    'post_status'           => 'publish',
    'ignore_sticky_posts'   => 1,
    'posts_per_page'        => 2, // Limit: two products
    'post__not_in'          => array( get_the_id() ), // Excluding current product
    'tax_query'             => array( array(
        'taxonomy'      => $taxonomy,
        'field'         => 'term_id', // can be 'term_id', 'slug' or 'name'
        'terms'         => $term_ids,
    ), ),
);

// Test count post output
echo '<p>Posts count: ' . $query->post_count . '</p>';

// The WP_Query loop
if ( $query->have_posts() ): 
    while( $query->have_posts() ): 
        $query->the_post();

        // Test output
        echo '<p>' . $query->post->post_title . ' (' . $query->post->ID . ')</p>';

    endwhile;
    wp_reset_postdata();
endif;
 类似资料:
  • 我已经为“产品”帖子类型注册了两个分类法。称他们为帕乌品牌 我已经创建了一个前端表单来编辑通过URL参数获取产品数据的产品。 我需要的是获得 以下仅适用于单个产品页面,因此我可以获得与产品相关的正确术语。 但如果页面不是单一产品,则为,我得到两个

  • 我尝试了许多方法,但我无法显示具有类别名称或id的产品

  • 我想让下面的代码对我的自定义posttype(产品类型)进行排序。因此,我的活动页面将只显示“油”一词的帖子,而不是“燃料”和“轮胎”。 //编辑,作为对以下3个答案的回复 我假设foreach循环是WP_查询方法的替代,但是tax_查询对我来说是新的,现在我知道它存在,我在codex中查找了它,但是它仍然不起作用。我诚实地认为,这就像我在tax_查询中错误地命名一样简单,因此我将在这里显示我的分

  • 我试图在woocommerce中获得一个特定的自定义属性。我在这个网站上读了很多文章,其中提供了3-5种方法。在尝试了所有方法之后,对我来说唯一有效的方法就是循环所有属性——所有其他属性都不起作用。我有一个名为“pdfs”的自定义属性 以下尝试不起作用:(链接) 这是唯一的一个工作:(链接) 我更希望能够使用第一个选项之一。任何帮助都将不胜感激。谢谢

  • 问题内容: 在Woocommerce中,我试图获取产品自定义属性值,但我失败了,我一无所获。 所以我尝试了: 我正在获取这些原始数据: 我知道有一个值,因为它显示在属性部分,但是我只是找不到一种方法来将其显示在我的自定义代码中。 问题答案: 编辑* : 自Woocommerce版本3起已弃用 * 按照@datafeedr在他的答案中写道: 甚至更紧凑: 原始答案:

  • 在WooCommerce中,我试图获得产品自定义属性值,但我失败了,什么也得不到。 所以我试着: 我得到了这些原始数据: 我知道有一个值,因为它显示在属性部分,但我就是找不到一种方法用我的自定义代码显示它。