gpt4 book ai didi

php - 具有动态值的自定义 WooCommerce 端点不起作用

转载 作者:行者123 更新时间:2023-12-04 09:06:19 25 4
gpt4 key购买 nike

我想为 WooCommerce 建立一个具有动态值(value)的新端点。不幸的是我得到了 rest_no_route错误。
这是代码(插件):

<?php 

function filter($data){
$brand = $data['brand'];
$products = [];
$loop = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => -1,
'meta_query' => array( array(
'key' => 'brands.id',
'value' => $brand,
'compare' => '=',
)),
));
if ( $loop->have_posts() ){
while ( $loop->have_posts() ){
$loop->the_post();
array_push($products, get_post())
}
wp_reset_postdata();
}
return $products;

}

add_action( 'rest_api_init', function () {
register_rest_route( '/wc/v3', '/brand=(?P<brand>\d+), array(
'methods' => 'GET',
'callback' => 'brand',
) );
} );


?>
这是我尝试访问的方式:
/wp-json/wc/v3/brand=1623
brand是这样的属性看起来像在产品内部:
"brands": [
{
"id": 1623,
"name": "HUGO BOSS",
"slug": "hugo-boss"
}
],
感谢您的每一个帮助!

最佳答案

这是关于分类术语 (不发布元数据),尤其是 WooCommerce 品牌,因此您需要使用 税务查询而是如下(假设您使用的是 WooCommerce Brands,所以分类应该是 "product_brand" )。
所以你的函数使 WP_Query应该:

function filter($data){
if( isset($data['brand']) && $data['brand'] > 0 ) {
$taxonomy = 'product_brand'; // The taxonomy for WooCommerce Brands

$products = (array) get_posts( array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'tax_query' => array( array(
'taxonomy' => $taxonomy,
'field' => 'term_id',
'terms' => intval($data['brand']),
) ),
) );

// return an array of WP_Post Objects (or an empty array)
return $products;
}
}
它应该更好地工作。您应该使用自定义名称以不同的方式命名您的函数。

关于php - 具有动态值的自定义 WooCommerce 端点不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63438361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com