Wordpress:挂钩XML-RPC以防止重复发帖

时间:2018-11-19 00:32:06

标签: wordpress xml-rpc

我有一个wordpress照片博客,可以为我重新发布instagram中的图像。 这些帖子是通过XML-RPC从IFTTT小程序创建的。 由于某些原因,经常会创建重复的帖子(这是一个已经存在多年的bug,而ifttt似乎并不关心它)。

要解决这个问题,我会在每个帖子中创建标题,其中包含照片的唯一instagram ID。我想用它来比较新的post_title和现有的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;
    }
  }

0 个答案:

没有答案