ie
$args = array('post_title'='LIKE '.$str.'% ');
$res = WP_Query($arg);
// the loop...
// trying this now...
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title like 'Abb%' ");
echo count($mypostids).", "; // works but can't echo out array of IDs for the next args?
$args = array(
'post__in'=> $mypostids
);
$res = WP_Query($args);
while( $res->have_posts() ) : $res->the_post(); ...
是否可以使用WP_Query或query_posts创建标题循环?
#1 楼
functions.php<?php
add_filter( 'posts_where', 'title_like_posts_where', 10, 2 );
function title_like_posts_where( $where, $wp_query ) {
global $wpdb;
if ( $post_title_like = $wp_query->get( 'post_title_like' ) ) {
$where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( $wpdb->esc_like( $post_title_like ) ) . '%\'';
}
return $where;
}
?>
然后:
$args = array(
'post_title_like' => $str
);
$res = new WP_Query($args);
#2 楼
最后在这篇文章的帮助下完成了这项工作。干杯们;$finalArgs = array (
'posts_per_page'=>5,
'order' => 'ASC',
'post_type' => 'school'
);
// Create a new instance
$searchSchools = new WP_Query( $finalArgs );
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '".$str."%' ");
$args = array(
'post__in'=> $mypostids,
'post_type'=>'school',
'orderby'=>'title',
'order'=>'asc'
);
$res = new WP_Query($args);
while( $res->have_posts() ) : $res->the_post();
global $post;
$EstablishmentNumber = get_post_meta($post->ID,'EstablishmentNumber', true);
$schl = array('id'=>$EstablishmentNumber, 'label'=>$post->post_title , 'value'=>$EstablishmentNumber );
$matchedSchools[] = $schl;
endwhile;
#3 楼
从另一个循环中获取标题$title = get_the_title();
并根据需要使用$ title变量。
<?php
global $post, $current_post_id, $title;
function filter_where($where = ''){
global $title;
$where .= "AND post_title = '$title'";
return $where;
}
add_filter('posts_where', 'filter_where');
$query = new WP_Query(array('post_type' => 'sessions') );
if ( have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
/* Loop here */
endwhile; endif;
wp_reset_query(); ?>
评论
它适用于自定义帖子类型和wordpress 3.2.1
–扎基尔·萨吉布(Zakir Sajib)
2011-11-22 23:35
#4 楼
是的,有可能。...global $wpdb;
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title like '%$str%' ");
$args = array('post__in'=$mypostids);
$res = WP_Query($arg);
评论
让Rajeev欢呼-尝试过此操作,但在get_col之后卡住了。我已经更新了上面^^^
– v3nt
2011年7月14日在15:17
效果很好,谢谢。
–csaborio
22小时前
#5 楼
在我看来,这些答复似乎是在尝试破解wordpress。在堆栈溢出时参考相同的问题:
https://stackoverflow.com/questions/25761593/wp-用标题查询类似东西和类别的查询
如果您要按标题排序的标题进行搜索查询,则此方法有效:
$the_query = new WP_Query(
array(
'post_type' => 'watches',
'posts_per_page' => 5,
'orderby' => 'title',
's' => 'my title'
)
);
此示例查询是针对名为watchs的帖子类型,而“ s”(搜索字词)是您可以在查询中查找帖子标题的地方
评论
这也将搜索内容
–马克·卡普伦
19年7月2日在12:17
评论
除了第二个参数(引用的$ wp_query)之外,它的工作原理非常好,该参数似乎不是过滤器回调的一部分(请参阅codex.wordpress.org/Plugin_API/Filter_Reference/posts_where),并且会产生错误。
–maryisdead
13-10-14在12:37
实际上,该代码至少在WP 4.1.1中是正确的。是Codex省略了第二个参数,因此,如示例中在add_filter中声明2个参数,它可以正常工作。该解决方案的另一个优点是它适用于自定义帖子类型。
– Yitwail
15年3月22日在4:49
这应该是可以接受的答案,因为它显示了如何使用WordPress内置函数而不是使用自定义SQL查询来执行此操作。
– Sudar
2015年4月2日在6:11
似乎这里缺少第一个%。就在LIKE \'之后。我添加了它并开始工作(4.2.4)
–vladkras
15年8月16日在10:45
是的,缺少第一个%,也添加了它,并且可以::(也许应该编辑答案?)
–托尼·米歇尔·考贝特(Toni Michel Caubet)
16-09-21在8:40