具有动态值的自定义 WooCommerce 端点不起作用
Custom WooCommerce endpoint with dynamic value is not working
我想为 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"
}
],
感谢您的帮助!
这是关于 分类术语(不是 post 元数据),尤其是 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;
}
}
它应该更好用。 您应该使用自定义名称以不同方式命名您的函数。
我想为 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"
}
],
感谢您的帮助!
这是关于 分类术语(不是 post 元数据),尤其是 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;
}
}
它应该更好用。 您应该使用自定义名称以不同方式命名您的函数。