Как предотвратить повторяющееся сообщение, проверив, существует ли заголовок сообщения перед запуском "wp_insert_post"? - PullRequest
5 голосов
/ 04 октября 2011

У меня есть сайт WordPress, который подключается к мыльному серверу.Проблема в том, что каждый раз, когда я запускаю скрипт, wp_insert_post снова использует один и тот же результат.Я хотел бы проверить, совпадает ли существующий post_title со значением из $ title, и если они совпадают, не позволяйте wp_insert_post снова использовать то же значение.

Вот код:

try {
    $client = new SoapClient($wsdl, array('login' => $username, 'password' => $password));
    } catch(Exception $e) {
      die('Couldn\'t establish connection to weblink service.');
    }
$publications = $client->GetPublicationSummaries();
foreach ($publications->GetPublicationSummariesResult->PublicationSummaries->PublicationSummary as $publication_summary) {

    // get the complete publication from the webservice
    $publication = $client->getPublication(array('PublicationId' => $publication_summary->ID))->GetPublicationResult->Publication;

    // get all properties and put them in an array
    $properties = array();
    foreach ($publication->Property as $attribute => $value) {
        $properties[$attribute] = $value;
    }

    // Assemble basic title from properties
    $title = $properties['Address']->Street . ' ' . $properties['Address']->HouseNumber . $properties['Address']->HouseNumberExtension . ', ' . $properties['Address']->City->_;
}

$my_post = array(
    'post_title'=>$title,
    'post_content'=>'my contents',
    'post_status'=>'draft',
    'post_type'=>'skarabeepublication',
    'post_author'=>1,
);
wp_insert_post($my_post);

Спасибо залюбая помощь.

Ответы [ 4 ]

14 голосов
/ 03 декабря 2011

Вы можете использовать get_page_by_title(), так как теперь он поддерживает пользовательские типы записей.

if (!get_page_by_title($title, OBJECT, 'skarabeepublication')) :

    $my_post = array(
        'post_title'=>$title,
        'post_content'=>'my contents',
        'post_status'=>'draft',
        'post_type'=>'skarabeepublication',
        'post_author'=>1,
    );
    wp_insert_post($my_post);

endif;

Информация о Кодексе здесь

6 голосов
/ 11 августа 2014

Удивило, что не упомянуло о функции post_exists в wp-includes / post.php. Смотрите запись на wpseek . Там нет записи в кодексе. В самом простом случае он работает как get_page_by_title, но возвращает идентификатор записи (или 0, если не найден) вместо объекта (или ноль).

$post_id = post_exists( $my_title );
if (!$post_id) {
    // code here
}
4 голосов
/ 07 октября 2012

Извините за поздний ответ. Я использовал то, что Робот говорит в комментарии, и это решило мою проблему. Спасибо

$post_if = $wpdb->get_var("SELECT count(post_title) FROM $wpdb->posts WHERE post_title like '$title_from_soap'");
if($post_if < 1){
    //code here
}
0 голосов
/ 13 апреля 2015

пробоотборник:

if( !get_page_by_path('mypageslug',OBJECT,'post') ){
  //your codes
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...