首页 > 解决方案 > 具有相同名称的现有页面时重写自定义帖子类型的规则

问题描述

我已经注册了一个自定义帖子类型“老师”和 slug“学院/老师”。现在,当我尝试访问应该出现在 College/teacher/classA 的帖子(“classA”)时,会抛出 404 错误。虽然,已经存在一个标题为“老师”的页面。

这是我用于注册自定义帖子类型的代码:

function teacher_item_section(){
// Custom Post Type Labels     
$labels = array(
    'name'               => _x( 'Teacher', 'post type general name' ),
    'singular_name'      => _x( 'Teacher', 'post type singular name' ),
    'add_new'            => _x( 'Add New', 'Images' ),
    'add_new_item'       => __( 'Add New' ),
    'edit_item'          => __( 'Edit Teacher' ),
    'new_item'           => __( 'New Teacher' ),
    'all_items'          => __( 'All Teachers' ),
    'view_item'          => __( 'View Teacher' ),
    'search_items'       => __( 'Search Teachers' ),
    'not_found'          => __( 'No Teacher Found' ),
    'not_found_in_trash' => __( 'No Teacher Found' ),
    'parent_item_colon'  => __( 'Teacher' ),
    'menu_name'          => __( 'Teachers' )
);

// Custom Post Type Supports 
$supports = array('title', 'editor', 'author', 'excerpt', 'custom-fields', 'revisions');

// Custom Post Type Arguments 
$args = array(
    'labels'             => $labels,
    'hierarchical'       => true,
    'description'        => '',
    'public'             => true,
    'publicly_queryable' => true,
    'show_ui'            => true,
    'show_in_menu'       => true,
    'show_in_nav_menus'  => true,
    'show_in_admin_bar'  => true,
    'show_in_rest'       => true,
    'exclude_from_search'=> true,
    'query_var'          => true,
    'can_export'         => true,
    'rewrite'              => array("slug" => "college/teacher"), // Permalinks format
    'has_archive'        => false,
    //'menu_position'      => 5,
    'supports'           => $supports,
    'capability_type'    => 'post',
);

register_post_type( 'teacher', $args );
}
add_action( 'init', 'teacher_item_section' );

此外,我尝试使用以下代码重写 URL,但还没有运气。

function colteacher_rewrite_rules() {
    add_rewrite_rule( 'college/teacher/([^/]*)/?', 'index.php?post_type=teacher&name=$matches][1]', 'top' );
    add_permastruct('teacher', 'college/teacher/%ateacher%' , version_compare($GLOBALS['wp_version'], '3.4', '<') ? false : array('with_front' => false));
}
add_action( 'init', 'colteacher_rewrite_rules', 10, 0 );

标签: wordpress

解决方案


推荐阅读