4条回复

Denis | 邓鸿华
Denis | 邓鸿华 - 6 年前

好的。

- 6 年前

这是我从一款专门去category的插件中提取的,可以支持去菜单栏中父子分类的,不会404,希望作者可以借鉴一下,其实是想让你加快速度,要不我还得开着一个插件,拖慢网站速度啊,哈哈哈
[code]//WordPress去掉分类目录URL中的category的方法

register_activation_hook(__FILE__,    \'no_category_base_refresh_rules\');

register_deactivation_hook(__FILE__,  \'no_category_base_deactivate\');

add_action(\'created_category\',  \'no_category_base_refresh_rules\');

add_action(\'delete_category\',   \'no_category_base_refresh_rules\');

add_action(\'edited_category\',   \'no_category_base_refresh_rules\');

add_action(\'init\',              \'no_category_base_permastruct\');

add_filter(\'category_rewrite_rules\', \'no_category_base_rewrite_rules\');

add_filter(\'query_vars\',             \'no_category_base_query_vars\');    

add_filter(\'request\',                \'no_category_base_request\');     

function no_category_base_refresh_rules() {

global $wp_rewrite;

$wp_rewrite->flush_rules();

}

function no_category_base_deactivate() {

remove_filter( \'category_rewrite_rules\', \'no_category_base_rewrite_rules\' ); 

no_category_base_refresh_rules();

}

function no_category_base_permastruct()

{

global $wp_rewrite;

global $wp_version;

if ( $wp_version >= 3.4 ) {

$wp_rewrite->extra_permastructs[\'category\'][\'struct\'] = \'%category%\';

} else {

$wp_rewrite->extra_permastructs[\'category\'][0] = \'%category%\';

}

}

function no_category_base_rewrite_rules($category_rewrite) {

global $wp_rewrite;

$category_rewrite=array();

if ( class_exists( \'Sitepress\' ) ) {

global $sitepress;

remove_filter( \'terms_clauses\', array( $sitepress, \'terms_clauses\' ) );

$categories = get_categories( array( \'hide_empty\' => false ) );

add_filter( \'terms_clauses\', array( $sitepress, \'terms_clauses\' ), 10, 4 );

} else {

$categories = get_categories( array( \'hide_empty\' => false ) );

}

foreach( $categories as $category ) {

$category_nicename = $category->slug;

if ( $category->parent == $category->cat_ID ) {

$category->parent = 0;

} elseif ( $category->parent != 0 ) {

$category_nicename = get_category_parents( $category->parent, false, \'/\', true ) . $category_nicename;

}

$category_rewrite[\'(\'.$category_nicename.\')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$\'] = \'index.php?category_name=$matches[1]&feed=$matches[2]\';

$category_rewrite[\"({$category_nicename})/{$wp_rewrite->pagination_base}/?([0-9]{1,})/?$\"] = \'index.php?category_name=$matches[1]&paged=$matches[2]\';

$category_rewrite[\'(\'.$category_nicename.\')/?$\'] = \'index.php?category_name=$matches[1]\';

}

$old_category_base = get_option( \'category_base\' ) ? get_option( \'category_base\' ) : \'category\';

$old_category_base = trim( $old_category_base, \'/\' );

$category_rewrite[$old_category_base.\'/(.*)$\'] = \'index.php?category_redirect=$matches[1]\';

return $category_rewrite;

}

function no_category_base_query_vars($public_query_vars) {

$public_query_vars[] = \'category_redirect\';

return $public_query_vars;

}

function no_category_base_request($query_vars) {

if( isset( $query_vars[\'category_redirect\'] ) ) {

$catlink = trailingslashit( get_option( \'home\' ) ) . user_trailingslashit( $query_vars[\'category_redirect\'], \'category\' );

status_header( 301 );

header( \"Location: $catlink\" );

exit();

}

return $query_vars;

}

?>
[/code]

- 6 年前

其实希望作者,可以添加一个清理数据库孤立、文章修订版本等无用数据的功能,不知道可行不可行,虽然要求有点儿过分,哈哈哈

Denis | 邓鸿华
Denis | 邓鸿华 - 6 年前

不考虑

我要回复

暂时不支持网页回复,请安装 WPJAM-Basic 插件,然后在 WordPress 后台即可参与讨论。