XMLRPC Избегайте дублирования контента

Я хочу избежать дублирования содержимого сообщения через xmlrpc. Так:

если почта существует, ничего не происходит …. если не существует данных вставка происходит ….

Метод проверки будет состоять из заголовка сообщения или сообщения. Я видел это решение, но, похоже, это не сработало.

Solutions Collecting From Web of "XMLRPC Избегайте дублирования контента"

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

Настройка на сайте A – XML-RPC-клиент

include_once( ABSPATH . WPINC . '/class-IXR.php' ); include_once( ABSPATH . WPINC . '/class-wp-http-ixr-client.php' ); $client = new WP_HTTP_IXR_CLIENT( 'http://example.tld/xmlrpc.php' ); // <-- Change! $client->debug = true; $result = $client->query( 'wp.newPost', [ 0, "username", //<-- Change! "password", //<-- Change! [ 'post_status' => 'draft', 'post_title' => 'xml-rpc testing', 'post_content' => 'hello xml-rpc! Random: ' . rand( 0, 999 ), ] ] ); 

где вам нужно изменить путь , имя пользователя и пароль для ваших нужд.

Если я правильно помню, эта замечательная статья Эрика Манна помогла мне в отношении кода настройки клиента, когда я тестировал свой плагин в прошлом году.

Настройка на сайте B – сервер XML-RPC

Здесь мы добавляем следующий плагин:

 <?php /** * Plugin Name: Avoid XML-RPC Post Title Duplication * Description: Prevent duplicate posts when doing wp.newPost via XML-RPC * Plugin URI: http://wordpress.stackexchange.com/a/157261/26350 */ add_action ('xmlrpc_call', 'wpse_xmlrpc_call' ); ///// function wpse_xmlrpc_call( $method ) { if( 'wp.newPost' === $method ) add_filter( 'xmlrpc_wp_insert_post_data', 'wpse_xmlrpc_wp_insert_post_data' ); }//// function wpse_xmlrpc_wp_insert_post_data( $post_data ) { // Check if the post title exists: $tmp = get_page_by_title( $post_data['post_title'], OBJECT, $post_data['post_type'] ); // Go from 'insert' to 'update' mode within wp_insert_post(): if( is_object ( $tmp ) ) $post_data['ID'] = $tmp->ID; return $post_data; } 

тесты

Прежде чем активировать наш плагин:

Если клиент A создает три сообщения с одним и тем же заголовком, но с другим контентом, то они будут отображаться как на сайте B:

до

Здесь мы видим, что эти три сообщения создаются на сервере B как новые сообщения.

После активации нашего плагина:

Теперь, если клиент A создает сообщение, он будет отображаться на сервере B следующим образом:

after2

Затем клиент A создает другое сообщение с тем же заголовком, но с другим контентом. Теперь изменен предыдущий пост:

after3

Список сообщений будет отображаться следующим образом:

after1

поэтому мы избежали дублирования.

Заметки

Убедитесь, что сайт B поддерживает XML-RPC.