Intereting Posts
Как перенаправить строку запроса в «виртуальный» подкаталог Изменение результатов поиска на основе post_type Динамическое создание классов для API виджета Как сделать работу javascript на странице параметров темы Показать гиперссылки только при регистрации пользователя Визуальный редактор WordPress удаляет весь текст до периода в маркированном списке Страницы WordPress ломаются с пользовательскими настройками постоянной ссылки (каталог темы не выводится) Должен ли я использовать WordPress для печати веб-сайта базы данных? Условное регулярное выражение в add_rewrite_rule () для конкретных фильтров запросов и разбиения на страницы Динамическое выпадение детских терминов, а затем выпадающие сообщения category__not_in и значения id из переменной Поиск способа загрузки функции после завершения предварительного просмотра предварительного просмотра Добавить класс div только к одному виджету Фотогалерея на странице профиля? как отключить плагин без использования функции WP?

Пользовательские поля XMLRPC и Underscored

Я создавал свое приложение для автоматизации всех моих блогов с моего рабочего стола. Цель, я отправлю блог. Это все. Я использовал службу XMLRPC , так как вы знаете «xmlrpc.php».

Я построил множество деталей, рядом с ними … Но застрял в настраиваемых полях, начинающихся с (_) подчеркивания. Я хотел бы сохранить как "_thumbnail_id" => (int) number. Ничего не произошло.

Но когда я попробовал «thumbnail_id» или что-то вроде этого, не начиная с подчеркивания. Все нормально. Хорошо работать, но начинать с подчеркивания …

Мне нужно это для определения отображаемого изображения сообщения. Без этого тега; Я не мог. И я не знаю альтернатив.

Я нахожу это: https://wordpress.org/support/topic/how-can-i-change-protected-params-xmlrpc Но не решая мою проблему. Я не хочу менять файлы WordPress. Если мне нужно, я могу написать небольшой скрипт без RPC.

Любая помощь будет FANTASTIC!

Solutions Collecting From Web of "Пользовательские поля XMLRPC и Underscored"

Игра с XML-RPC и подчеркнутыми настраиваемыми полями:

Предположим, мы хотим установить изображение с изображением на заданный пост с помощью $remote_post_id .

Мы хотим, чтобы это было приложение с идентификатором, равным 300 , поэтому мы хотим, чтобы _thumbnail_id составляло 300 .

Вот три способа, которыми можно было бы достичь:

Метод №1 – Использование post_thumbnail

Можно обновить / добавить изображение с параметром post_thumbnail :

 $result = $client->query( 'wp.editPost', array( $blog_id, $username, $password, $remote_post_id, $post_data = array( 'post_thumbnail' => '300', ), ) ); 

как можно видеть [здесь, в классе wp_xmlrpc_server ] [1].

Метод # 2 – Использование custom_fields с meta_id

Если мы хотим обновить настраиваемое поле сообщения, мы должны знать его значение meta_id базы данных.

Но откуда мы узнаем meta_id ?

Пользовательские поля фактически включены по умолчанию, когда мы получаем сообщение с:

 $result = $client->query( 'wp.getPost', array( $blog_id, $username, $password, $remote_post_id, ) ); 

Если столбец имеет отмеченную миниатюру сообщения, то приведенный выше результат будет содержать эту часть:

 <member> <name>custom_fields</name> <value> <array> <data> <value> <struct> <member> <name>id</name> <value> <string>560</string> </value> </member> <member> <name>key</name> <value> <string>_thumbnail_id</string> </value> </member> <member> <name>value</name> <value> <string>200</string> </value> </member> </struct> </value> </data> </array> </value> </member> 

где meta_id – это, например, 560 а старое meta_value200 .

Теперь мы можем обновить мета-значение _thumbnail_id с нашим новым значением:

 $result = $client->query( 'wp.editPost', array( $blog_id, $username, $password, $remote_post_id, $post_data = array( 'custom_fields' => array( array( 'id' => '560', 'key' => '_thumbnail_id', 'value' => 300 ) ), ), ) ); 

Обратите внимание, что если мы пропустим часть meta_id , мы будем запускать только add_post_meta() вместо [ update_metadata_by_mid() ] [2], которая была введена в этом trac . Мы также должны иметь возможность edit_post_meta .

Но это не вся история, потому что мета-ключи, начинающиеся с подчеркивания (_), защищены .

Мы можем исправить это, используя функцию [ register_meta() ] [3] на удаленном сайте.

Например:

 /** * Unprotect the _thumbnail_id meta key to allow updates via XML-RPC * We need to set this up on the remote site. */ add_action( 'init', function() { register_meta( 'post', '_thumbnail_id', 'absint', '__return_true' ); }); 

для _thumbnail_id защиты с мета-ключа _thumbnail_id . Сначала я попробовал intval в качестве обратного вызова для intval но это не сработало.

Мы могли бы использовать аналогичную настройку для других защищенных мета-ключей.

Метод # 3 Использование пользовательского метода XML-RPC.

Как отметил в своем ответе @MarkKaplun, мы могли бы расширить настройку XML-RPC для наших нужд. Мы могли бы, например, использовать фильтр xmlrpc_methods чтобы добавить наш собственный метод.

Кодекс содержит дополнительную информацию по этому вопросу.

Рекомендации:

Вот некоторые ссылки, которые помогли мне при тестировании этого:

  • https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-xmlrpc-server.php

  • XML RPC @Codex

  • Билет Trac # 17850 @ wp.org

  • update_metadata_by_mid()

  • Автоматизация «синдикации» репо @ GitHub: class-syndication-wp-xmlrpc-client.php

  • Стандарты типа контента @GitHub (props @kaiser) – и более конкретно эта проблема , которая объясняет пример использования register_meta() немного более подробно, в том же репо.

_Указанные метаданные определяются как данные, которые являются внутренними по отношению к программному обеспечению и не изменяются непосредственно пользователем. Вероятно, поэтому вы не можете изменить его с помощью XMLRPC.

Если вам нужна такая функциональность, вы можете написать небольшой плагин, который расширяет набор данных, которые вы можете изменить с помощью XMLRPC.

Но поскольку вы задаете вопрос конкретно о признанных изображениях, вы должны искать api, который позволяет вам связать вложение как отличные изображения. Быстрый google не использовал никакой документации для этого, но, похоже, что люди сделали это успешно https://stackoverflow.com/questions/12355922/set-featured-image-for-wordpress-post-via-xml-rpc .