我在帖子类型中有多个自定义字段。我可以保存数据,更新和显示,一切都很好。现在我在做搜索引擎。由于它是一个库,必须能够在特定字段(自定义字段)、publisher、country等中搜索。这里是我为publisher提供的代码。。。
我打开一个变量
function register_query_vars( $vars ) {
$vars[] = \'publisher\'; //
return $vars;
}
add_filter( \'query_vars\', \'register_query_vars\' );
按发布者在短代码中搜索表单
function publisher_search() {
add_shortcode( \'search_form_publisher\', \'search_form_publisher\' );
}
add_action( \'init\', \'publisher_search\' );
形式:
function search_form_publisher( $atts ){
$output = \'<form action="\' . esc_url( home_url() ) . \'" method="get" role="search">\';
$output .= \'<input type="text" name="publisher" value="\' . get_search_query() . \'" class="field" placeholder="Search..."/>\';
$output .= \'<input type="hidden" name="post_type" value="books" />\';
$output .= \'<input type="submit" value="Search!" class="button" />\';
$output .= \'</form>\';
return $output;
}
到目前为止,一切都很好。搜索时,将生成以下url:
http://localhost/library/?publisher=search_term&post_type=books
它使用存档{post type}。php模板
$args = array(
\'post_type\' => \'books\',
\'post_status\' => \'publish\',
\'meta_query\' => array(
array(
\'key\' => \'publisher\',
\'value\' => get_query_var(\'publisher\'),
\'compare\' => \'LIKE\',
)
)
);
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) : $the_query->the_post();
// Your code here
publisher();
endwhile;
} else {
echo \'no posts found\';
}
/* Restore original Post Data */
wp_reset_postdata();
我像这样打印自定义字段发布器的值,其效果很好:
function publisher() {
global $wp_query;
$post = $wp_query->post;
$publisher = get_post_meta($post->ID, \'publisher\', true);
if (!empty($publisher)) {
echo $publisher;
}
}
然而,问题是查询不返回任何结果。打印内容如下:
Array ( [post_type] => books [post_status] => publish [meta_query] => Array ( [0] => Array ( [key] => publisher [value] => Harvard [compare] => LIKE ) ) )
也就是说,如果它收集了搜索词的值。我尝试了许多在互联网上找到的代码,但都不起作用。我认为一个添加posts\\u搜索过滤器的函数,但我尝试过的那些都不起作用。
如果您能帮助解决这个问题,我将不胜感激。我迷路了。非常感谢。