是否将自定义帖子类型档案添加到搜索结果?

时间:2018-11-05 作者:Rhecil Codes

如何获得包含自定义帖子类型(CPT)存档的WP搜索结果?例如,如果我有CPT\'career\' 其标题(在php模板中)为“Careers”,我如何获得搜索结果以包括“Careers”、“career”、“jobs”的CPT存档URL(www.my-domain.com/Careers)。

我想问题可能是,一个人能否在搜索中插入自己的结果,以及如何插入?

我也可以选择使用Relevanssi搜索插件。我安装它是为了解决这个问题,但似乎光靠它是不够的。

感谢您的关注。

4 个回复
最合适的回答,由SO网友:Chris Herbert 整理而成

WordPress不会在搜索结果中返回帖子类型存档页。Relevanssi可能会起作用,但更简单的方法是创建一个自定义页面模板,其中列出career 项目。将页面命名为“Careers”,它将显示在搜索结果中。

这种方法的另一个优点是,页面的文本内容可以显示在career 项目,这意味着您可以在WordPress中管理它,而不是在模板中对文本进行硬编码。

分页也有缺点career 项目要复杂得多,因此您可能会试图完全禁用分页,并在单个页面上显示它们。如果你有几十个或数百个项目,这不是一个好主意。

SO网友:admcfajn

可以使用修改查询pre_get_posts, 下面是一个示例:

<?php
function add_cpt_to_search( $wp_query ) {
    if ( ! is_admin() && is_main_query() && is_search() ) {
        $wp_query->set( \'post_type\', [ \'post\', \'careers\', \'page\' ] );
    }
}
add_action( \'pre_get_posts\', \'add_cpt_to_search\' );

In the if-statement above there are 3 conditions:

  • !is_admin(): 确保此规则仅发生在wordpress的前端,而不发生在wp管理区域is_main_query(): 确保该规则仅应用于搜索提要循环,而不是输出导航菜单项的循环
  • is_search(): 仅当显示搜索结果页面时,才将规则聚焦到。请随意调整以满足您的需要。如果未在搜索页面上显示搜索结果,则可能需要进行检查$wp_query->get(\'s\')

SO网友:josembdl

只需创建一个名为“Careers”的空白页。这将出现在搜索结果中。点击“www.my-domain”。com/careers的wordpress会将您重定向到CPT存档。

SO网友:Zeth

你不需要Relevansi。

您只需将其添加到archive.php:

$post_type = get_post_type_object( get_post_type( $post ) );
if( $post_type ) {
  echo \'<p class="search-result-post-type">\' . esc_html( $post_type->labels->singular_name ) . \'</p>\';
}
我敢肯定,我是从这里的另一个帖子里得到的,我自己也用过。但是我找不到另一个帖子,所以我不能转帐-/

结束

相关推荐

Media searching ignored

我们的网站使用WordPress,有很多媒体文件。我们网站的媒体名称格式如下[Car brand\'s name]-[number].jpg, 例如Tesla-1.jpg 或Aston Martin-3.jpg. 因此,我们可以通过搜索文章的名称轻松找到文章的特定媒体。但突然间,我们找不到媒体。我们正在尝试搜索名称为的媒体,但搜索结果不变。(不搜索任何内容时的媒体屏幕)(搜索Aston Martin时的媒体屏幕)当然,在填充搜索文本框后,它会显示一个加载图标,但结果总是一样的。为什么会发生这种情况?更新+

是否将自定义帖子类型档案添加到搜索结果? - 小码农CODE - 行之有效找到问题解决它

是否将自定义帖子类型档案添加到搜索结果?

时间:2018-11-05 作者:Rhecil Codes

如何获得包含自定义帖子类型(CPT)存档的WP搜索结果?例如,如果我有CPT\'career\' 其标题(在php模板中)为“Careers”,我如何获得搜索结果以包括“Careers”、“career”、“jobs”的CPT存档URL(www.my-domain.com/Careers)。

我想问题可能是,一个人能否在搜索中插入自己的结果,以及如何插入?

我也可以选择使用Relevanssi搜索插件。我安装它是为了解决这个问题,但似乎光靠它是不够的。

感谢您的关注。

4 个回复
最合适的回答,由SO网友:Chris Herbert 整理而成

WordPress不会在搜索结果中返回帖子类型存档页。Relevanssi可能会起作用,但更简单的方法是创建一个自定义页面模板,其中列出career 项目。将页面命名为“Careers”,它将显示在搜索结果中。

这种方法的另一个优点是,页面的文本内容可以显示在career 项目,这意味着您可以在WordPress中管理它,而不是在模板中对文本进行硬编码。

分页也有缺点career 项目要复杂得多,因此您可能会试图完全禁用分页,并在单个页面上显示它们。如果你有几十个或数百个项目,这不是一个好主意。

SO网友:admcfajn

可以使用修改查询pre_get_posts, 下面是一个示例:

<?php
function add_cpt_to_search( $wp_query ) {
    if ( ! is_admin() && is_main_query() && is_search() ) {
        $wp_query->set( \'post_type\', [ \'post\', \'careers\', \'page\' ] );
    }
}
add_action( \'pre_get_posts\', \'add_cpt_to_search\' );

In the if-statement above there are 3 conditions:

  • !is_admin(): 确保此规则仅发生在wordpress的前端,而不发生在wp管理区域is_main_query(): 确保该规则仅应用于搜索提要循环,而不是输出导航菜单项的循环
  • is_search(): 仅当显示搜索结果页面时,才将规则聚焦到。请随意调整以满足您的需要。如果未在搜索页面上显示搜索结果,则可能需要进行检查$wp_query->get(\'s\')

SO网友:josembdl

只需创建一个名为“Careers”的空白页。这将出现在搜索结果中。点击“www.my-domain”。com/careers的wordpress会将您重定向到CPT存档。

SO网友:Zeth

你不需要Relevansi。

您只需将其添加到archive.php:

$post_type = get_post_type_object( get_post_type( $post ) );
if( $post_type ) {
  echo \'<p class="search-result-post-type">\' . esc_html( $post_type->labels->singular_name ) . \'</p>\';
}
我敢肯定,我是从这里的另一个帖子里得到的,我自己也用过。但是我找不到另一个帖子,所以我不能转帐-/

相关推荐

Media searching ignored

我们的网站使用WordPress,有很多媒体文件。我们网站的媒体名称格式如下[Car brand\'s name]-[number].jpg, 例如Tesla-1.jpg 或Aston Martin-3.jpg. 因此,我们可以通过搜索文章的名称轻松找到文章的特定媒体。但突然间,我们找不到媒体。我们正在尝试搜索名称为的媒体,但搜索结果不变。(不搜索任何内容时的媒体屏幕)(搜索Aston Martin时的媒体屏幕)当然,在填充搜索文本框后,它会显示一个加载图标,但结果总是一样的。为什么会发生这种情况?更新+