对内部联接帖子的Wordpress查询 - >自定义表 - > post meta metakey = metavalue

时间:2011-02-06 14:44:16

标签: mysql wordpress

我需要使用CUSTOM TABLE和POSTMETA加入POSTS。我正在跟踪自定义表中的热门帖子,但我只想要返回具有特定postmeta值的帖子。

我搜索过,找不到啧啧。

这就是我认为'我应该做的......但是当它在phpmyadmin中手动完成时它不起作用。

  

SELECT(发布信息)FROM posts IN INNER   JOIN custom_table t ON p.ID = t.ID   INNER JOIN post_meta m ON p.ID = m.ID   在哪里m.metakey ='mykey'AND   post_type ='post'和post_date<   '$ now'和post_date> '$ lastmonth'   ORDER BY postcount DESC LIMIT 5“);

我是否需要将post meta作为单独的子查询内部加入?

1 个答案:

答案 0 :(得分:2)

如果我建议,请尝试使用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 );

?>