修改WordPress XML-RPC内置

时间:2014-07-24 作者:ncMatt

简而言之,我希望能够修改wp。getPost响应还返回其他数据,如permalink。我认为这就像调用xml rpc代码似乎要调用的同一个函数一样简单(wp_getPost):

add_filter( \'xmlrpc_methods\', \'nc_xmlrpc_methods\' );

function nc_xmlrpc_methods( $methods ) {
    $methods[\'wp.getPost\'] = \'my_getPost\';
    return $methods;
}

function nc_getPost( $args ) {
    global $wp_xmlrpc_server;
    $post_obj = $wp_xmlrpc_server->wp_getPost( $args );
    $post = $post_obj->to_array();

    $post[\'permalink\'] = get_permalink( $post_obj->ID );

    return $post;
}
关于permalink,我知道getPost已经返回了一个链接,但它对草稿没有帮助,因为我需要知道未来的链接,而不是当前路径。

我看到了this post 它建议扩展wp_xmlrpc_server. 我对PHP完全陌生,所以我不能完全确定为什么这是必要的,除非我真的在构建API的扩展。我的代码是否缺少一些基本的东西?

1 个回复
SO网友:ncMatt

找到了答案。

$post_obj[\'permalink\'] = my_getDraftPermalink( $post_obj[\'post_id\'] );
这是获取post\\u id的正确语法。然后需要一个自定义函数,该函数以与post仪表板UI相同的方式获取永久链接。仪表板使用get_sample_permalink 而不是get_permalink, 如果帖子不活动,它将返回草稿路径。

function my_getDraftPermalink ( $post_id ) {
    require_once ABSPATH . \'/wp-admin/includes/post.php\';

    list( $permalink, $postname ) = get_sample_permalink( $post_id );

    return str_replace( \'%postname%\', $postname, $permalink );
}

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php