Просто заменив post_title на post_name - ничего не получится. Вот код функции post_exist
wpseek.com/function/post_exists Вам нужно сделать точно такую же, только с другим именем, и чтобы проверка была не post_title в теле этой функции, а post_name. Тогда переменная $post_exist у вас будет отражать реальное существование поста по имени. А сейчас вы передаете имя, но функция сравнивает его с тайтлом.
приблизительно, добавляете такую функцию (можно в файл плагина, раз уж Вы взялись его курочить)
function post_exists_by_name($name, $content = '', $date = '') {
global $wpdb;
$post_name = wp_unslash( sanitize_post_field( 'post_name', $name, 0, 'db' ) );
$post_content = wp_unslash( sanitize_post_field( 'post_content', $content, 0, 'db' ) );
$post_date = wp_unslash( sanitize_post_field( 'post_date', $date, 0, 'db' ) );
$query = "SELECT ID FROM $wpdb->posts WHERE 1=1";
$args = array();
if ( !empty ( $date ) ) {
$query .= ' AND post_date = %s';
$args[] = $post_date;
}
if ( !empty ( $name ) ) {
$query .= ' AND post_name = %s';
$args[] = $post_name;
}
if ( !empty ( $content ) ) {
$query .= 'AND post_content = %s';
$args[] = $post_content;
}
if ( !empty ( $args ) )
return (int) $wpdb->get_var( $wpdb->prepare($query, $args) );
return 0;
}
после чего, в плагине, в строке 557 (как вы написали) проверка будет выглядеть следующим образом
$post_exists = post_exists_by_name( $post['post_name'], '', $post['post_date'] );
только обратите внимание, что Вы еще передаете дату.. то есть существующие будут только те, что имеют одинаковое имя, и !!точно!! совпадающую дату. Если дата для одинаковости не критична, то просто
$post_exists = post_exists_by_name( $post['post_name] );
Писал быстро, возможно что то проглядел, пытался передать идею. Надеялся на Ваше знание php и Wordpress, раз полезли в код плагинов ;)