按自定义域查询和排序帖子

时间:2011-05-15 作者:Tiago

我试图查询一个自定义帖子类型“jogos”,其中的元值“data\\u de\\u lancamento”(发布日期)为<;=该字段使用的格式为dd/mm/yy。

然后,从该查询返回的帖子必须按自定义字段“视图”降序排列。

我当前的代码是:

date_default_timezone_set(\'Europe/Lisbon\');
$data = date("d/m/y");
global $wpdb;

$sql = "SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta.meta_key = \'views\'
AND wpostmeta2.meta_key = \'data_de_lancamento\'
AND wpostmeta2.meta_value < $data
AND wposts.post_type = \'jogos\'
AND wposts.post_status = \'publish\'
ORDER BY wpostmeta.meta_value ASC";

$resultado = $wpdb->get_results($sql, OBJECT);

1 个回复
SO网友:tollmanz

您需要使用meta_query 运行查询时WP\\U类的参数。像这样的事情应该会为你指明正确的方向。

$data = date("Y-m-d");
$args = array(
    \'post_type\' => \'jogos\',
    \'meta_query\' => array(
        array(
            \'key\' => \'data_de_lancamento\',
            \'value\' => $data,
            \'compare\' => \'<=\'
        )
    ),
    \'meta_key\' => \'views\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'DESC\'
 );
$query = new WP_Query( $args );
这个问题的症结在于,几乎不可能以“dd/mm/yy”的形式来比较日期。因此,此代码不会起作用。您需要首先将日期格式更改为“yyyy-mm-dd”。这是执行日期比较的一种更有用的方法。此外,您可能需要对操作员进行一些测试,以确保其正常工作。

注意,我指定使用meta_query 这是WP 3.1的新增内容。meta_keymeta_value 自WP 3.1起已弃用;然而,订购方meta_value 实际上,您仍然需要指定meta_key 作为您希望其排序依据的值。令人困惑且没有很好的记录。

参考文献:

http://codex.wordpress.org/Function_Reference/WP_Query#Custom_Field_Parameters

http://codex.wordpress.org/Function_Reference/WP_Query#Order_.26_Orderby_Parameters

结束

相关推荐

如何使用WPEC 3.8回显loop-page.php上的标记描述

我正在尝试在标记的页面上显示“标记描述”。我在循环页面中添加了一个if语句。php已经无法在显示标记页面时仅显示自定义文本。。。<?php } elseif ( is_tax ( \'product_tag\' ) ){ ?><h1 class=\"entry-title\"><?php the_title(); ?> print out this text on page</h1> 。。。但我不知道输出标记描述的代码。有人知道显示标签描述的代码吗