У меня есть фотоблог 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;
}
}