我正在寻找一种在wordpress中删除默认类别功能的方法,但在wp_terms
表中,它会自动将默认类别分配给另一个类别。
有人知道如何做到这一点吗?
谢谢你的帮助。
我正在寻找一种在wordpress中删除默认类别功能的方法,但在wp_terms
表中,它会自动将默认类别分配给另一个类别。
有人知道如何做到这一点吗?
谢谢你的帮助。
不可能的WordPress需要硬编码的默认类别。
如果需要没有默认值的分类法,请创建custom taxonomy.
我可以通过手动删除数据库中的记录来实现这一点,如果我记得正确,它位于wp\\U术语中,但我可能错了。
add_filter( \'pre_option_default_category\', \'__return_empty_string\', 999 );
为什么上面的代码可以工作当WordPress试图在此处保存后设置默认类别时,这将为其提供空字符串:https://github.com/WordPress/WordPress/blob/7004afe4f4bac1fd17a142051832bdf6be8e6fcf/wp-includes/post.php#L3672-L3680// Make sure we set a valid category.
if ( empty( $post_category ) || 0 == count( $post_category ) || ! is_array( $post_category ) ) {
// \'post\' requires at least one category.
if ( \'post\' == $post_type && \'auto-draft\' != $post_status ) {
$post_category = array( get_option( \'default_category\' ) );
} else {
$post_category = array();
}
}
稍后,它将尝试在此处分配该类别:https://github.com/WordPress/WordPress/blob/7004afe4f4bac1fd17a142051832bdf6be8e6fcf/wp-includes/post.php#L3955-L3957 if ( is_object_in_taxonomy( $post_type, \'category\' ) ) {
wp_set_post_categories( $post_ID, $post_category );
}
该函数将从elseif返回true,因为类别数组不是空的,但此处的值是空的https://github.com/WordPress/WordPress/blob/7004afe4f4bac1fd17a142051832bdf6be8e6fcf/wp-includes/post.php#L4613-L4622if ( empty( $post_categories ) ) {
if ( \'post\' == $post_type && \'auto-draft\' != $post_status ) {
$post_categories = array( get_option( \'default_category\' ) );
$append = false;
} else {
$post_categories = array();
}
} elseif ( 1 == count( $post_categories ) && \'\' == reset( $post_categories ) ) {
return true;
}
注意,用户将看到在中设置默认类别的选项wp-admin/options-writing.php
此代码不会禁用该功能,但该功能将不再工作。最简单的方法是转到“wp\\U选项”表,并将“default\\u category”设置为0。
我不明白为什么人们总是说术语是Wordpress的绝对要求。事实并非如此。
如果没有其他内容,您可以将默认类别从“未分类”更改为“新闻”或与您的使用相关的内容。
有没有办法排除除一个类别之外的所有类别?我想显示一个类别和它的子类别作为下拉菜单,但管理员可能会添加更多的子类别,所以我不想限制他们可以放在那里的唯一ID。所以我想排除除1及其子类别之外的所有类别。wp\\u list\\u categories()是否可以这样做?