我正在使用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”没有完成它应该做的事情。