Wordpress: подключите XML-RPC для предотвращения дублирования записей - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть фотоблог WordPress, который перепечатывает изображения из Instagram для меня. Посты создаются из апплета IFTTT через XML-RPC. По какой-то причине часто создаются повторяющиеся сообщения (это ошибка, которая существует уже много лет, и если кажется, что ее это не волнует).

Чтобы обойти это, я создаю каждый пост с заголовком, содержащим уникальный идентификатор Instagram фотографии. Я хотел бы использовать это для сравнения нового post_title с существующими.

Я попытался подключиться к transition_post_status , это работает для обычной публикации, но все сообщения, приходящие, хотя XML-RPC, все еще публикуются. Кажется, они обходят это действие.

Могу ли я подключиться к XML-RPC при создании сообщения и предотвратить его, если у него уже есть post_title?

Вот код, который работает для обычных сообщений:

add_action('transition_post_status', 'check_for_duplicates', 10, 3);

function check_for_duplicates($new_status, $old_status, $post) {
    if('publish' === $new_status && 'publish' !== $old_status && $post->post_type === 'post') {

      global $post;
      global $wpdb ;
      $title = $post->post_title;
      $post_id = $post->ID ;
      $wtitlequery = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND post_title = '{$title}' AND ID != {$post_id} " ;

      $wresults = $wpdb->get_results( $wtitlequery) ;

      if ( $wresults ) {
          $error_message = 'This title is already used. Please choose another';
          add_settings_error('post_has_links', '', $error_message, 'error');
          settings_errors( 'post_has_links' );
          $post->post_status = 'draft';
          wp_update_post($post);
          wp_die( $error_message );

          return;
      }
      //return $messages;
    }
  }
...