Wordpress-запрос к сообщениям внутреннего объединения -> настраиваемая таблица -> мета-пост, где metakey = metavalue - PullRequest
0 голосов
/ 06 февраля 2011

Мне нужно присоединиться к POSTS с ТАМОЖЕННЫМ СТОЛОМ и POSTMETA.Я отслеживаю популярные сообщения в пользовательской таблице, но хочу, чтобы возвращались только сообщения, имеющие определенное значение postmeta.

Я искал и не мог найти пачку.

Вот то, что я «думаю», я должен сделать ... но это не работает, когда выполняется вручную в phpmyadmin.

SELECT (информация о сообщении) из сообщений p ВНУТРЕННЕЕ РЕШЕНИЕ custom_table t ON p.ID = t.ID INNER JOIN post_meta m ON p.ID = m.ID WHERE m.metakey = 'mykey' И post_type = 'post 'AND post_date <' $ now 'И post_date>' $ lastmonth 'ORDER BY postcount DESC LIMIT 5 ");

Нужно ли внутреннее объединение мета записи как отдельный подзапрос?

1 Ответ

2 голосов
/ 29 марта 2011

Если я могу предложить, попробуйте использовать WP_Query (). Это будет немного неуклюже, поскольку вам нужно будет добавить фильтр для диапазона дат публикации, а затем удалить его, но в противном случае он будет предсказуемо функционировать без трехслойного объединения SQL.

<?php
include_once( "wp-config.php" );

function filter_date_range( $where = '' ) {
    $lastmonth = date("Y-m-d 00:00:00", strtotime("-1 month"));
    $where .= " and post_date<now() and post_date>'{$lastmonth}'";
    return( $where );
}

add_filter( 'posts_where', 'filter_date_range' );

$q = new WP_Query(array(
    "post_status" => "publish",
    "post_type" => "post",
    "posts_per_page" => 5,
    "meta_query" => array(array(
        "key" => "mykey",
        "value" => "my_preferred_value"
    ))
));

remove_filter( 'filter_date_range' );

var_dump( $q->posts );

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...