Проверить, существует ли сообщение по названию и термину таксономии?

Ниже приведен код для проверки существования сообщения путем просмотра строки заголовка в wpdb,

function post_exists($title) {
global $wpdb;
return $wpdb->get_row("SELECT * FROM wp_posts WHERE post_title = '" . $title . "'", 'ARRAY_A');
}

Как я могу проверить, существует ли сообщение по названию и термину таксономии?
Например, у меня есть специальная таксономияgenres«и термин таксономии»horrorMsgstr «Я хочу проверить, существует ли пост по заголовку, а также по термину» ужас «.

Я боролся с этим пару дней.

1

Решение

таксономия и термин хранятся в wp_term_taxonomy а также wp_terms
таблица, поэтому вам нужно присоединиться, чтобы получить желаемый результат.

Я изменил вашу функцию, как показано ниже.

function wh_post_exists($title) {
global $wpdb;

$query = $wpdb->prepare("SELECT posts.ID
FROM $wpdb->posts AS posts
INNER JOIN $wpdb->term_relationships AS term_relationships ON posts.ID = term_relationships.object_id
INNER JOIN $wpdb->term_taxonomy AS term_taxonomy ON term_relationships.term_taxonomy_id = term_taxonomy.term_taxonomy_id
INNER JOIN $wpdb->terms AS terms ON term_taxonomy.term_id = terms.term_id
WHERE term_taxonomy.taxonomy = 'genres'
AND terms.slug = 'horror'
AND posts.post_type = 'post'
AND posts.post_title = %s", $title);
$result = $wpdb->get_row($query, 'ARRAY_A');

//checking error msg
if ($wpdb->last_error !== '') {
$wpdb->print_error();
die('-- code execution discontinued --');
}
if (count($result) > 0) {
return TRUE; //exists
} else {
return FALSE; //does not exists
}
}

Надеюсь это поможет!

0

Другие решения

$result = get_posts(array(
'showposts' => -1,
'post_type' => 'post', // post Type any even you can use custom post type
'tax_query' => array(
array(
'taxonomy' => 'genres', // Taxonomy name like genres
'field' => 'name',
'terms' => array('horror')) // Taxonomy term
),
'orderby' => 'title',
'order' => 'ASC'));

if(!empty($result)){ // Term related Post exist then do code
}
0

По вопросам рекламы [email protected]