WP_QUERY未返回我的自定义帖子

时间:2013-10-18 作者:HMR

我正在使用these 帮助器类创建自定义帖子,但wp\\u查询不返回任何实例。检查了源代码,据我所知,public已设置为true。

查询如下:

  $numFetch=$multiple?100:1;
  $args = array( \'posts_per_page\' => $numFetch,
      \'search_post_title\' => $data_source_name,
      \'post-type\' => \'any\',
      \'orderby\' => \'title\', \'order\' => \'ASC\'
      );
  $args[\'search_post_title\'] = $multiple?
    \'.post_title LIKE \\\'\' . esc_sql(like_escape($data_source_name)) . \'%\\\'\':
    \'.post_title = \\\'\' . esc_sql(like_escape($data_source_name)) . \'\\\'\';
  add_filter(\'posts_where\', \'title_filter\', 10, 2);
  $loop = new WP_Query($args);
  while ($loop->have_posts()) : $loop->the_post();
    var_dump($post);
  endwhile;
在函数中。php我有

function title_filter($where, &$wp_query) {
  global $wpdb;
  if ($search_term = $wp_query->get(\'search_post_title\')) {
    $where .= \' AND \' . $wpdb->posts . $search_term;
  }
  return $where;
}
当我添加一篇标题相同的帖子时,它确实会显示出来。我将尝试手动创建一个自定义帖子,看看是否会显示(默认public为true),但不确定这是否是问题所在。我希望它不会出现在搜索中,除非我指定它,但也找不到这样做的方法(如\'exclude_from_search\'=>true)

[UPDATE]

Added the following code in functions.php:
function codex_custom_init() {
    $args = array(
      \'public\' => true,
      \'label\'  => \'Books\'
    );
    register_post_type( \'book\', $args );
}
add_action( \'init\', \'codex_custom_init\' );
然后添加了一本标题为“a Book”的书,然后将查询代码更改为:

$args[\'search_post_title\'] = \'.post_title LIKE \\\'%a book%\\\'\';
但没有返回任何项目。

如果我添加了一篇标题为“一本书”的帖子,它就会出现。看起来“post type”=>“any”没有完成它应该做的事情。

2 个回复
SO网友:HMR

我又花了一个小时试着调试一些东西,因为我键盘上的shift键并不总是有效。

post-type != post_type
post和type之间应该有一个欠分,而不是连字符。

SO网友:Ram Ratan Maurya

尝试添加此选项,看看是否有效:

function filter_search( $query ) {
    if ( $query->is_search ) {
        $query->set(\'post_type\', array(\'book\'));
    };
    return $query;
};
add_filter( \'pre_get_posts\', \'filter_search\' );

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post