请参阅updated comment.
默认情况下,您必须对搜索功能进行一些更改。
首先,如果要对每种搜索使用不同的模板,可以在search.php
文件
if(isset($_GET[\'search-type\'])) {
$type = $_GET[\'search-type\'];
if ($type == \'global\') {
load_template(TEMPLATEPATH . \'/search-global.php\');
} elseif ($type == \'blog\') {
load_template(TEMPLATEPATH . \'/search-blog.php\');
}
}
要添加字段
search-type
在您的搜索表单中。此字段将被隐藏,因为只需要它来分隔搜索类型,在这种情况下,您将实现多个不同的搜索。
<form id="searchform-global" method="get" action="<?php echo home_url(\'/search/\'); ?>" role="global-search">
<input id="s" type="search" name="s" placeholder="Search global...">
<input type="hidden" name="search-type" value="global" />
<button id="searchsubmit" type="submit">Search</button>
</form>
现在,在上面的代码中,您可以看到操作指向
/search/
路径使用操作非常重要
pre_get_posts
, 为了告诉WordPress页面
search 是搜索结果页。显然,您必须首先在WordPress仪表板中创建页面。
因此,您必须在functions.php
.
function new_search_global( $query ) {
$page_id = 43; // This is ID of page with your structure -> http://example.com/mysearch/
$per_page = -1; // Get all posts.
// Now we must edit only query on this one page
if ( !is_admin() && $query->is_main_query() && is_page($page_id) ) {
// Also, if you want to add a specific class for your template search
add_filter( \'body_class\', function( $classes ) {
$classes[] = \'global-search\';
return $classes;
} );
$query->set( \'pagename\', \'\' ); // we reset this one to empty!
$query->set( \'posts_per_page\', $per_page ); // Set posts per page.
$query->is_search = true; // We making WP think it is Search page
$query->is_page = false; // disable unnecessary WP condition
$query->is_singular = false; // disable unnecessary WP condition
}
}
add_action( \'pre_get_posts\', \'new_search_global\' );
如果您创建
search-global.php
新的搜索模板,您可以在那里创建一个新的查询,以便获取搜索和其他内容。在下面的示例中,我使用
$search
要获取搜索查询并检索该搜索的所有帖子,请执行以下操作:
$search = get_search_query();
// WP_Query arguments
$args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => \'-1\',
\'s\' => $search
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// do stuff here
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
最后,如果您进行搜索,您将获得以下URL:
https://yoururl.com/search/?s=yoursearch&search-type=global
.
此外,为了以防万一,您需要刷新permalinks结构,转到Dashboard>;设置(>);Permalinks>;保存设置。
希望能帮助您!:)
更新我刚刚发现我可能误解了你的问题(我将留下以上信息仅供参考)。如果只想在页面上显示特定搜索,只需在那里创建一个新查询,如下所示:
// WP_Query arguments
$args = array(
\'post_type\' => \'post\',
\'posts_per_page\' => \'-1\',
\'s\' => \'starbucks\'
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// do stuff here
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
The
\'s\'
参数正在进行搜索
starbucks
. 在
args
您可以添加更多条件来检索帖子。你可以在法典中进一步阅读
WP_Query here.