我需要对 WordPress 的搜索结果进行分类,我通过向帖子和自定义帖子类型添加类别来做到这一点。现在,只有页面没有任何类别列出,我认为也可以将类别添加到页面,但我不知道它的后果。
请您分享您的想法和经验。
谢谢
我需要对 WordPress 的搜索结果进行分类,我通过向帖子和自定义帖子类型添加类别来做到这一点。现在,只有页面没有任何类别列出,我认为也可以将类别添加到页面,但我不知道它的后果。
请您分享您的想法和经验。
谢谢
Wordpress 不提供在 pages 中创建类别的选项。
可以做的一件事是修改搜索查询这将仅在所有页面中搜索您。
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'page');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
当您只想在搜索中显示页面时,在某些特定条件下添加此挂钩。
另一面将显示除页面以外的所有内容。因为你将不得不通过他们的 ID 排除页面
function SearchFilter($query) {
if ($query->is_search) {
$excludeId = array(23,23,23);
$query->set('post__not_in', array($excludeId));
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
WordPress 本身并没有您想要的全球分类法。WordPress 中的类别与博客文章相关联。
为了实现这一点,我将结合使用令人难以置信的Advanced Custom Fields
(ACF) 插件和修改functions.php
来向您的网站添加自定义分类并将其应用于您的所有帖子类型。
在 functions.php 中,像这样进行自定义分类(根据您的需要进行修改):
// add_action registers the taxonomy into wordpress
add_action( 'init', 'setup_my_tax' );
// this function sets up the taxonomy to whatever standards you want
// reference register_taxonomy on codex.wordpress.org
function setup_my_tax()
// first parameter becomes the slug of the tax
register_taxonomy( 'capabilities', array( 'post' ), array(
// labels will determine how it show up in a menu
'labels' => array(
'add_new_item' => 'Add New ',
'all_items' => 'All Capabilities',
'edit_item' => 'Edit Capability',
'menu_name' => 'Capabilities',
'name' => 'Capabilities',
'new_item' => 'New Capability',
'not_found' => 'No Capabilities Found',
'not_found_in_trash' => 'No Capabilities Found in Trash',
'parent' => 'Parent of Capability',
'search_items' => 'Search Capabilities',
'singular_name' => 'Capability',
'view_item' => 'View Capability'
),
// important individual settings from register_taxonomy
'hierarchical' => true,
'public' => true,
'query_var' => true,
'show_admin_column' => true,
'show_ui' => true
));
}
安装 ACF 后,您将使用 GUI 创建包含此分类的自定义字段集。自定义字段集下方是rule
向您展示如何将自定义位应用于所有实体的选项。
在page.php
和其他模板中,您可以参考您的分类术语,如下所示:
// Put the capabilities into an array variable
$capObjects = get_field('capabilities');
// Iterate through the the array of tags and output them
// In WordPress, you have to use the term ID to lookup the term name
foreach ($capObjects as $capObject):
echo '<li class="capabilities-item">';
echo '<a href="' . get_term_link($capObject) . '">' . $capObject->name . '</a> ';
echo '</li>';
endforeach;
您现在可以通过跨越所有内容类型的真实标签来调整您的搜索模板。