Intereting Posts
Отображать значение настраиваемого поля в виде mailto: link Невозможно обработать комментарии из-за пользовательского файла comments.php Как сразу применить значения в customizer js api angularjs не отображает все сообщения Проблемы с смешанным контентом и истекшим сеансом с SSL и wp-admin Разрешения на загрузку файлов Проблема с бесконечной прокруткой на многоузловом с пользовательским запросом Почему этот код не добавляет таблицу в мою базу данных? Выберите записи с любым post_type из базы данных? WordPress как фреймворк Создание связанного почтового отделения на основе аналогичных категорий Невозможно установить стандартные плагины на локальную установку MAMP Существуют ли какие-либо проблемы безопасности при установке константы WP_INSTALLING в значение true? WordPress Widget – сохранение многомерных массивов в $ instance Как подсчитать количество терминов в таксономии

Изменение встроенных в XML-RPC WordPress

Короче говоря, я хочу иметь возможность изменять ответ wp.getPost, чтобы также возвращать дополнительные данные, такие как постоянная ссылка. Я думал, что будет так же просто, как просто вызвать ту же функцию, что и код 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 возвращает ссылку уже, но это не полезно для черновиков, потому что мне нужно знать будущую ссылку, а не текущий путь.

Я видел этот пост, и он предлагает расширить wp_xmlrpc_server . Я совершенно новый для PHP, поэтому я не совсем уверен, почему это необходимо, если я действительно не строю расширение API. Я что-то пропустил с моим кодом?

Solutions Collecting From Web of "Изменение встроенных в XML-RPC WordPress"

Догадаться.

 $post_obj['permalink'] = my_getDraftPermalink( $post_obj['post_id'] ); 

Это правильный синтаксис для получения post_id. Тогда требуется настраиваемая функция, которая получает постоянную ссылку так же, как пользовательский интерфейс панели управления. Панель управления использует get_sample_permalink а не get_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 ); }