Я пытаюсь программно вставлять сообщения из внешней базы данных MySQL в виде сообщений в моем блоге WordPress, у меня есть что-то, что работает, но WordPress не может проверить, существует ли уже сообщение, прежде чем оно вставит новое сообщение в момент, поэтому я получаю много повторяющихся записей.
Я уверен, что для тех, кто знает, как это сделать, мы говорим о некоторых простых условных операторах if, else здесь, но я не могу понять, что нужно проверить, чтобы убедиться, что сообщение еще не было добавлено в база данных вордпресс? Я понял, что это что-то вроде различия между wp_insert_post и wp_update_post, я просто не могу понять, что проверять и как заставить WordPress проверять каждую запись?
Нужно ли мне добавить некоторые данные custom_meta? Или, например, условный оператор может сверяться с заголовком или датой?
Действительно ценю любую помощь совета, который кто-нибудь может предложить?
Большое спасибо!
Мой код выглядит следующим образом:
if( ) {
// Create post object
$post = array();
$post['post_title'] = $user ." said " . $text;
$post['post_content'] = "<div class='tweet'><a href='" . $user_url . "'><img class='photo' src='" . $image . "' alt='" . $user . "' /></a><a href='" . $user_url . "'>" . $user . "</a> <strong>" . $date .": </strong><p>" . $text . "</p></div>\n";
$post['post_status'] = 'publish';
$post['post_date'] = date("jS F Y, G:i.s", $date);
//$post['post_type'] => 'post';
// Insert the post into the database
wp_insert_post( $post );
}
else {
// Update post object
$post = array();
$post['post_title'] = $user ." said " . $text;
$post['post_content'] = "<div class='tweet'><a href='" . $user_url . "'><img class='photo' src='" . $image . "' alt='" . $user . "' /></a><a href='" . $user_url . "'>" . $user . "</a> <strong>" . $date .": </strong><p>" . $text . "</p></div>\n";
$post['post_status'] = 'publish';
$post['post_date'] = date("jS F Y, G:i.s", $date);
//$post['post_type'] => 'post';
// Insert the post into the database
wp_update_post( $post );
}
Какие уникальные данные возвращаются вашим внешним SQL-запросом? Я бы предположил, что вам нужно будет вставить какие-то уникальные данные (например, первичный ключ из внешней БД) в виде данных $post или метаданных, а затем ваше условие может искать существование этих уникальных данных.
В качестве альтернативы вы можете хешировать постданные из внешней БД, а затем сохранять хэш-значение как метаданные $post и запрашивать существование хеш-значения?
РЕДАКТИРОВАТЬ:
Чтобы запросить определенные метаданные $post, используйте
get_post_custom()
функцию ( Codex ref ). например:Примечание: это предполагает, что вы уже разобрались, как добавлять пользовательские метаданные сообщений, например, через
add_post_meta()
( Codex ref ).Привет, Чип, спасибо за это, да, каждая запись имеет уникальный идентификатор, поэтому я могу сохранить это как метаданные $ post, я думаю, это достаточно просто! Какой процесс вы предлагаете для запроса его существования, здесь мое понимание становится немного мутным !!
Я только что добавил пример кода, используя
get_post_custom()
.