使用API更新wp_postmeta中的meta_value

时间:2018-07-23 作者:Ankit Pandey

我正在尝试使用API更新特定的meta\\u键字段。meta\\u密钥名称是\\u yoast\\u seo\\u redirect。它包含一个重定向URL,我们在wordpress的post选项中提供了该URL。

我想实现的是,每当有人点击url时,如:

http://yoursite.com/wp-json/post_info/post?id=59&meta_value=www.google.com

它应该用meta\\u值更新post\\u id:59:www.google。com公司

现在写,我在尝试实现此目标时遇到json错误:

[
{
code: "json_no_route",
message: "No route was found matching the URL and request method"
}
]
以下是我试图实现的功能:

function get_post_details ($params)
{
    $id = $_GET[\'id\'];
    $meta_value = $_GET[\'meta_value\'];  

    if(update_post_meta( $id, \'_yoast_wpseo_redirect\', $meta_value ))
    {
        $post[\'status\'] = \'Successfully Updated\';
        $post[\'flag\'] = \'1\';
    }
    else
    {
        $post[\'status\'] = \'Error\';
        $post[\'flag\'] = \'0\';    
    }

    if( empty( $post ) ){
        return null;
    }

    return $post;
}

 // Register the rest route here.

add_action( \'rest_api_init\', function () {
    register_rest_route( \'post_info\', \'post\',array(

            \'methods\'  => \'GET\',
            \'callback\' => \'get_post_details\'

        ));

});
任何帮助都将不胜感激。非常感谢。

1 个回复
SO网友:kero

我真的无法重现错误。您确定脚本已正确加载吗?

function get_post_details ($params)
{
    return rest_ensure_response( \'Hello World, this is the WordPress REST API\' );
}

// Register the rest route here.
add_action( \'rest_api_init\', function () {
    register_rest_route( \'post_info\', \'post\',array(
            \'methods\'  => \'GET\',
            \'callback\' => \'get_post_details\'
        ));
});
这给了我预期的响应-因此路线正确注册在

http://www.example.com/wp-json/post_info/post
至于参数suggested in the REST API docs, 您应该使用$params 而不是$_GET. 更改此项并添加$post = array(); (因此正确声明了变量),使您的代码在我的本地计算机上工作。您可能应该首先检查是否设置了这些值

function get_post_details ($params)
{
    $id = $params[\'id\'];
    $meta_value = $params[\'meta_value\'];

    $post = array();

    if(update_post_meta( $id, \'_yoast_wpseo_redirect\', $meta_value ))
    {
        $post[\'status\'] = \'Successfully Updated\';
        $post[\'flag\'] = \'1\';
    }
    else
    {
        $post[\'status\'] = \'Error\';
        $post[\'flag\'] = \'0\';
    }

    if( empty( $post ) ){
        return null;
    }

    return $post;
}

// Register the rest route here.
add_action( \'rest_api_init\', function () {
    register_rest_route( \'post_info\', \'post\',array(
            \'methods\'  => \'GET\',
            \'callback\' => \'get_post_details\'
        ));
});
以及路线

http://www.example.com/wp-json/post_info/post?id=21&meta_value=https://www.google.com

If you don\'t have pretty permalinks enabled, the route may look different!

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在