#php #wordpress
#php #wordpress
Вопрос:
Я создал плагин для получения заголовка сообщения через API при отправке. Я использовал простой запрос API для получения данных после использования wp_insert_post()
функции добавления в БД. Но я хочу проверять каждый раз при отправке в существующий заголовок. Если есть новый заголовок сообщения, добавьте его в базу данных, если нет, то он сообщит, что «Новых сообщений нет»
plugin.php
if(isset($_POST['enable'])) {
$url='api/url';
$result = file_get_contents($url);
$resultData = json_decode($result);
foreach ($resultData as $job) {
$post_exists = get_page_by_title( $job->JobTitle, OBJECT, 'post');
if ( post_exists) {
$data = array (
'post_type' => 'post',
'post_title' => $job->JobTitle,
'post_status' => 'publish',
'post_author' => $user_ID
);
$post_id = wp_insert_post( $data );
}
}
echo "Done!";
}
Комментарии:
1. вы можете использовать функцию post_exists() WordPress, пожалуйста, обратитесь к этому URL developer.wordpress.org/reference/functions/post_exists
2. @Bhautik спасибо за отзыв, я пробую эту функцию, все та же проблема (вы можете написать код?
3. проверьте мой ответ.
4. @Bhautik я уже проверил как истинный ответ. Большое спасибо.
5. Вы можете проголосовать, если мой ответ вам поможет.
Ответ №1:
Попробуйте этот код.
if( isset( $_POST['enable'] ) ) {
$url = 'api/url';
$result = file_get_contents( $url );
$resultData = json_decode( $result );
foreach ($resultData as $job) {
$post_title = sanitize_title( $job->JobTitle );
$post_id = post_exists( $post_title );
if( !$post_id ){
$data = array(
'post_type' => 'post',
'post_title' => $post_title,
'post_status' => 'publish',
'post_author' => $user_ID,
);
$post_id = wp_insert_post( $data );
}else{
//post title exist
}
}
}
Ответ №2:
Вы должны попробовать это, этот код вернет массив всех сообщений, которые соответствуют названию.
global $wpdb;
$query = $wpdb->prepare('SELECT ID FROM ' . $wpdb->posts . ' WHERE post_title = "'.$post_title.'" AND post_status="publish"');
$post_exists = $wpdb->get_results( $query );