你好@Josh:
Your query works fine. 可能是你的$events_metabox
变量不在范围内,导致代码失败(奇怪的是,它仍然运行页脚,不知道为什么。)要修复它,请首先尝试在模板顶部将其设置为全局:
global $events_metabox
如果这不起作用,您将不得不以其他方式跟踪问题,因为我不知道您的代码在做什么
$events_metabox
.
使用增量删除和print_r()
当你遇到这样的问题时,开始拿走碎片,直到你解决了问题。如果要查看查询是否正常工作,请使用
print_r()
转储包装在中的值
<pre>
标签,以便您可以看到发生了什么,即:
<?php
$pageposts = $wpdb->get_results($querystr, OBJECT);
echo \'<pre>\';
print_r($pageposts);
echo \'<pre>\';
此外,使用get_posts()
与直接SQL不同的是highly 建议您将查询替换为get_posts()
呼叫WordPress的最佳实践是always use the WordPress API and it\'s query functions 和never use direct SQL 除非根本没有办法。您可以获得许多好处,包括内置缓存。在某些情况下,它们可以处理诸如确保只显示已发布的帖子,除非您另有说明,并且如果它们将来更改数据库结构,则不太可能中断。
这是答案get_posts()
调用您需要替换硬编码的SQL查询(使用一些注意事项):
$pageposts = get_posts(\'meta_key=_events_meta[event_date]&orderby=meta_value&order=ASC\');
或者这个等价物做了完全相同的事情:
$pageposts = get_posts(array(
\'meta_key\' => \'_events_meta[event_date]\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
));
我提到的注意事项是,您的查询没有过滤掉未发布的草稿等。;我猜是什么
get_posts()
它是否真的比你想要的更多。
食品法典文件get_posts()
文档
get_posts()
在这里: