简而言之,我希望能够修改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的扩展。我的代码是否缺少一些基本的东西?
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 );
}