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

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

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

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

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


person user7983571    schedule 09.05.2017    source источник


Ответы (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
    }
}

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

person Raunak Gupta    schedule 09.05.2017