我有一个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;
}
}