Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress ACF-筛选关系查询以显示此类别中可用的产品_Wordpress_Woocommerce_Advanced Custom Fields - Fatal编程技术网

Wordpress ACF-筛选关系查询以显示此类别中可用的产品

Wordpress ACF-筛选关系查询以显示此类别中可用的产品,wordpress,woocommerce,advanced-custom-fields,Wordpress,Woocommerce,Advanced Custom Fields,我正在尝试使用高级自定义字段在WooCommerce中创建自定义类别产品排序顺序。 我已经找到了一个方法来设置它。方法是: 将ACF关系字段添加到类别页面。 将其配置为仅显示产品。 添加一个函数,根据您添加的产品对类别页面进行排序。 它工作得很好! 我的问题是,它总是显示所有可用的产品,而不仅仅是该类别中可用的产品 我正在尝试使用此功能,但tag_id不起作用 add_filter('acf/fields/relationship/query', 'my_acf_fields_relations

我正在尝试使用高级自定义字段在WooCommerce中创建自定义类别产品排序顺序。 我已经找到了一个方法来设置它。方法是:

将ACF关系字段添加到类别页面。 将其配置为仅显示产品。 添加一个函数,根据您添加的产品对类别页面进行排序。 它工作得很好! 我的问题是,它总是显示所有可用的产品,而不仅仅是该类别中可用的产品

我正在尝试使用此功能,但tag_id不起作用

add_filter('acf/fields/relationship/query', 'my_acf_fields_relationship_query', 10, 3);
function my_acf_fields_relationship_query( $args, $field, $post_id ) {

$args['tag_id'] = $category_id;

return $args;
}

有什么建议吗?

您想按产品类别术语进行筛选,因此不应使用:

而是使用:

[term_id]
您已按照教程进行操作,但筛选函数不起作用。您已经创建了自定义字段并插入了创建自定义产品订单的函数。如果我正确回答了您的问题,那么不起作用的是获取特定类别中所有产品ID数组的函数。因此,您将获得所有可用的产品,而不是您选择的类别中的产品

这应该是您问题的一部分,以便其他人可以找到解决方案:

这是您使用的教程中的代码:

在上面代码的第7行中,您正在使用get_category_product_ids$category_id函数,并将$category_id作为参数

教程中的get_category_product_id函数如下所示:

// helper function to fetch all product IDs from a specific category ID

function get_category_product_ids($category_id) {
    $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_id',
                'terms' => $category_id,
                'operator' => 'IN'
            )
        )
    );

    $ids = get_posts($args);

    return $ids;
}
此函数获取参数$category\u id,并使用它进行后期查询并保存税务查询的结果id

这是实际的答案,可能会帮助您:

如果您想找出它不起作用的原因,应该首先查看$category_uid变量,因为这个值是使它起作用的最重要的因素。因此,设置变量后,您可以查看变量中是否有数据,函数中是否有var_dump:

var_dump($category_id)
调用my_custom_product_order函数时,变量设置是否正确,是否有数据?您应该获得当前查看类别的id

如果您没有在我的\u定制\u产品\u订单中获得id

您应该看看get\u queryed\u object\u id函数。可以用另一种方法获得该值。get_queryed_object函数返回一个WP_Term对象。因此,您还可以:

$category_id = $q->get_queried_object();
$category_id = $category_id->term_id;
也许你现在有了你需要的身份证

如果没有,您应该检查参数$q,它是用来做什么的?也许这会引起问题。您可以尝试以下方法:

if (is_product_category()) {
    $q = get_queried_object();
    $term_id = $q->term_id;
}
如果您在我的\u定制\u产品\u订单中获得id

然后您应该看看get_category_product_id函数。参数有效吗?在这个函数中尝试var_dump,看看是否有值被传递给这个函数。如果不是,您可以通过另一种方式获取变量。这似乎是多余的,使参数变得无用,但通过这种方式,您可以确保税务查询有一个类别ID。将此项放在“我的产品”类别\u ID的开头:

$category_id = get_queried_object();
$category_id = $category_id->term_id;

希望这能帮助你找出它不起作用的原因。不知道解决问题会很困难。如果我是对的,问题在于您的$category\u id没有使函数工作的值。

我没有使用标签,我使用的是WooCommerce产品类别。我试图设置为标记,因为在URL中有-term.php?taxonomy=product\u cat&tag\u ID=86。。。另外,我希望$category\u id是我正在编辑的当前类别,您有什么建议吗?我做了很多工作来向您展示如何找到问题的解决方案。希望这对你有帮助,希望你能投赞成票,也许这已经解决了你的问题,你可以接受编辑过的anwser。嗨,很抱歉回复太晚了!我会测试一下,让你知道!
if (is_product_category()) {
    $q = get_queried_object();
    $term_id = $q->term_id;
}
$category_id = get_queried_object();
$category_id = $category_id->term_id;