关于这个问题,其实在《几招搞定wordpress自由获取指定分类中的日志》一节中讲解过有关函数的使用方法;同时,Daniel Pataki在Smashing Magazine已经发布一篇关于《Using WP_Query In WordPress》的文章,其中进一步讲解了关于WP_Query的诸多进阶使用方法;感兴趣的朋友可以至内容下方,点击链接前去看看。
言归正传,来看看在wordpress里,如何实现自定义字段的区间查询功能?
在百度知道,有一道这样的提问:
有一个自定义字段为price ,想做一个根据这几个值0-99 100-199 200-499来分类查询并获得文章。
http://zhidao.baidu.com/question/871353190867198172.html
看到这个问题,想想能不能通过提供一定的参数,就可以实现这样的功能?答案是肯定的,有关详细的查询参数列表,可以至官网 in the Codex进一步了解;
这里仅列出代码,如下:
$min_price = 0; $max_price = 99; //The args $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => 'price', 'value' => array($min_price, $max_price), 'compare' => 'BETWEEN', 'type' => 'NUMERIC' ) ) ); // The Result $naruco = new WP_Query( $args ); var_dump($naruco); if ( $naruco -> have_posts() ) { // The Loop while ( $naruco ->have_posts() ) : $naruco ->the_post(); ....内容输出部分略 endwhile; }
嗨,您好。。我是在百度知道请教您有关wordpress问题的那个“MoMo小盆友”。。我由于IP不是国内,所以无法再在百度给您回复,继续请教我的问题。。所以找到了您这个链接(很高兴看到您也是用的twenty twelve)。。我想在贵宝地继续向您请教WP的问题。。我就直接粘贴我的内容了。。
“您好。。谢谢您对我的回答,我觉得我找对人了!!哈哈。。先谢谢啦。
您说的那篇文档,我还没有看过,我现在正在看。但是您说‘如果能确保WP可访问到您新建的TEMPLATE文件,那要想使用wpdb其实是很方便的。’这句话,我在新建page的时候,是可以选用我创建的模板的,所以我觉得WP应该是可以访问的吧。
然后接下来的数据库访问过程中,我一旦添加连接数据库的代码,整个页面反而显示异常,比如菜单栏会出现所有现有页面的名字(我就是复制了page.php文件,然后在里面定义了function来连接数据库)。我也不知道怎么回事。。我想如果不麻烦的话,可以把我的模板文件发给您看看吗?我基本没有改动,但是我想问题还是源于这里(这个网络的问题让我很头疼,所以不介意,咱们可以邮件联系吗:really2clever(at)163(dot)com)。。template那篇文档,我现在正在看,看完如果还有什么疑问,还请您不吝赐教。。非常感谢~”
再次感谢您的宝贵时间与答复。。谢谢~祝好~
针对你这个问题,我有两点建议:
1、如果你当前页面模板可以被正常加载的情况下,需要访问另外一个数据库,可以参考require_wp_db()函数的方法,新增一个独立的全局数据库对象变量,比如:
if ( class_exists('wpdb') ){
global $mydb;
$mydb = new wpdb( '数据库用户名', '密码', '您的数据库', 'db host' );
var_dump( $mydb ); //查看输出的结果是否正常
}
我花了点时间测试了一下,这样是可以使用的,一旦$mydb创建成功,你即可以使用里面的get_results等函数实现数据库的相关操作了。进一步测试还需要你自己来完成
2、或许将你原有的数据库,整合到现在的WP数据库中,可能更方便些;
比如你原数据库中有TABLE1,TABLE2….将这些表拷贝到WP表中,并将表前缀改成一至,如wp_table1, wp_table2…
这样$wpdb也就能正常访问这些表了吧?!
老师,您好。。谢谢您的回复。可是很抱歉我还是没有解决,我的基础实在太弱了。所以只有再次求教。。非常抱歉给您添麻烦了。
对于您的第一个方法,我在/includes下的load.php加了您给我的这句话,可以显示数据库的一些信息,但是是在所有的页面都显示了。。然后对于我想显示数据的页面,我不知道是应该在template里面写sql语句,还是特定的那个页面写sql,但是试来试去都没有任何动静。。我看了一下网上的视频,很多是在dashboard里面显示sql的查询结果,而不是在页面。。也有的是在plugin里面写sql语句。。我更加迷惑了。。再次骚扰,请您多多包涵,不吝赐教。。
另外有个不情之请,请问,我可以加你的QQ什么的吗?因为我不在国内,这边实在没有什么人可以请教,和您们又经常有时差。
我把我在load.php的代码贴上来了,希望能找到问题。。非常感谢您的时间和答复,祝好!
function require_wp_db() {
global $wpdb;
require_once( ABSPATH . WPINC . ‘/wp-db.php’ );
if ( file_exists( WP_CONTENT_DIR . ‘/db.php’ ) )
require_once( WP_CONTENT_DIR . ‘/db.php’ );
if ( isset( $wpdb ) )
return;
$wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
if ( class_exists(‘wpdb’) ){
global $mydb;
$mydb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
}
}
哦,明儿就放春假了,得回老家,年后咱们再交流吧。
好的,还是谢谢您。。
问题已经解决了,sql语句我在template里面写错位置了。。终于解决了,还是谢谢您!祝您新春愉快!