我已经创建了一个插件来充当某个请求的api。它的结构如下:
add_action( 'rest_api_init', 'registerRoute' );
function registerRoute() {
register_rest_route( 'test/v1/', 'mobile', array(
'methods' => 'POST',
'callback' => array(new testApi(), $_POST['action']),
));
}
class testApi
{
.......
public function getProduct()
{
$post_id = 123;
var_dump(wc_get_product( $post_id ));exit;
}
.......
}
在上面的代码中,wc_get_product returns boolean(false)
。我尝试了其他wordpress函数来查看它们是否返回任何值,即:
get_post($post_id);
空
wp_get_current_user();
并返回以下内容:
object(WP_User)#1772 (7) {
["data"]=>
object(stdClass)#1773 (0) {
}
["ID"]=>
int(0)
["caps"]=>
array(0) {
}
["cap_key"]=>
NULL
["roles"]=>
array(0) {
}
["allcaps"]=>
array(0) {
}
["filter"]=>
NULL
}
所以,我在网上进行了一些搜索,并在我的文件上面添加了这段代码:
require_once(ABSPATH . 'wp-load.php');
当我回显ABSPATH时,它确实给了我路径字符串。我也可以使用$wpdb
对象;
我想知道为什么我无法通过上面显示的产品ID获取产品对象。该产品是可预订的产品,它仍然存在于数据库中。
请告诉我,这里出了什么问题。
答案 0 :(得分:0)
使用json_decode();
add_action( 'rest_api_init', 'registerRoute' );
function registerRoute() {
register_rest_route( 'test/v1/', 'mobile', array(
'methods' => 'POST',
'callback' => array(new testApi(), $_POST['action']),
));
}
class testApi
{
public function getProduct()
{
global $product;
$_product = wc_get_product('215');
$response = array(
"result"=>true,
"data" => json_decode($_product),
"message"=>'Single Product'
);
return $response;
}
}