我有一个自定义的帖子类型,叫做people。
我想有3个搜索字段;名字、中间名和姓氏
我在考虑用自己的搜索框创建一个页面,并使用query\\u帖子:
<?php query_posts( array( \'post_status\' => \'publish\' ,
\'post_type\' => array( \'people\' ),
\'meta_query\' => array(
array (
\'key\' => \'last-name\',
\'value\' => $last,
\'compare\' => \'LIKE\'
),
array (
\'key\' => \'first-name\',
\'value\' => $first,
\'compare\' => \'LIKE\'
),
array (
\'key\' => \'middle-name\',
\'value\' => $middle,
\'compare\' => \'LIKE\'
)
)
)
); ?>
这是正确的搜索方式吗?
最合适的回答,由SO网友:s_ha_dum 整理而成
假设需要AND
名字、中间名和姓氏之间的关系,但是query_posts
is never, ever, ever the right way to do anything.
注:This function isn\'t meant to be used by plugins or themes. 如后文所述,有更好、性能更好的选项来更改主查询。query_posts() is overly simplistic and problematic 通过将页面的主查询替换为查询的新实例来修改页面的主查询的方法。It is inefficient (重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。任何现代的WP代码都应该使用更可靠的方法,比如使用pre\\u get\\u posts钩子。
新建WP_Query
对象并使用它。
$args = array(
// your arguments as above
);
$q = new WP_Query($args);
if ($q->have_posts()) {
while ($q->have_posts()) {
$q->the_post();
the_title(); // etc.
}
}