如何解决具有动态值的自定义WooCommerce端点不起作用
我想为WooCommerce建立一个具有动态价值的新端点。不幸的是,我遇到了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品牌,因此分类应为“ 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;
}
}
应该更好地工作。 您应该使用自定义名称来命名函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。