将类别添加到永久链接时,WordPress CPT 会导致 404
Posted
技术标签:
【中文标题】将类别添加到永久链接时,WordPress CPT 会导致 404【英文标题】:WordPress CPT causing 404s when categories are added to permalinks 【发布时间】:2021-12-31 12:16:42 【问题描述】:我为运行良好的画廊创建了自定义帖子类型 (CPT) 和分类法。
问题在于当我将 /%category%/ 添加到永久链接结构时,非 CPT 帖子的永久链接会变为 404。
在 (1) 我从 functions.php 中删除自定义分类法,或 (2) 当我从永久链接中删除 /%category%/ 时,永久链接有效。因此我知道问题出在functions.php 中的CPT 或/和分类代码上,但我看不到问题所在。非常感谢您的帮助。
/* Custom Post Type - Gallery */
add_action( 'init', 'add_gallery_post_type' );
function add_gallery_post_type()
register_post_type(
'zm_gallery',
array(
'labels' => array(
'name' => __( 'The Gallery' ),
'singular_name' => __( 'The Gallery' ),
'add_new_item' => __( 'Add New Photograph' ),
'all_items' => __( 'All Images' ),
),
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'gallery-item' ),
'supports' => array( 'title' ),
'menu_position' => 4,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'menu_icon' => 'dashicons-camera',
'capability_type' => 'post',
)
);
/* Gallery Taxonomies */
function be_register_taxonomies()
$taxonomies = array(
array(
'slug' => 'location',
'single_name' => 'Location',
'plural_name' => 'Locations',
'post_type' => 'zm_gallery',
),
array(
'slug' => 'circa',
'single_name' => 'Circa',
'plural_name' => 'Circas',
'post_type' => 'zm_gallery',
),
array(
'slug' => 'era',
'single_name' => 'Era',
'plural_name' => 'Era',
'post_type' => 'zm_gallery',
),
);
foreach ( $taxonomies as $taxonomy )
$labels = array(
'name' => $taxonomy['plural_name'],
'singular_name' => $taxonomy['single_name'],
'search_items' => 'Search ' . $taxonomy['plural_name'],
'all_items' => 'All ' . $taxonomy['plural_name'],
'parent_item' => 'Parent ' . $taxonomy['single_name'],
'parent_item_colon' => 'Parent ' . $taxonomy['single_name'] . ':',
'edit_item' => 'Edit ' . $taxonomy['single_name'],
'update_item' => 'Update ' . $taxonomy['single_name'],
'add_new_item' => 'Add New ' . $taxonomy['single_name'],
'new_item_name' => 'New ' . $taxonomy['single_name'] . ' Name',
'menu_name' => $taxonomy['plural_name'],
);
$rewrite = isset( $taxonomy['rewrite'] ) ? $taxonomy['rewrite'] : array( 'slug' => $taxonomy['slug'] );
$hierarchical = isset( $taxonomy['hierarchical'] ) ? $taxonomy['hierarchical'] : true;
register_taxonomy(
$taxonomy['slug'],
$taxonomy['post_type'],
array(
'hierarchical' => $hierarchical,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => $rewrite,
)
);
add_action( 'init', 'be_register_taxonomies' );
【问题讨论】:
我测试了你的代码,没有发现问题。添加自定义帖子类型后,您是否保存了永久链接? 为了测试,我尝试了一些东西或关闭了一些东西等,然后我将永久链接更改为普通链接,然后返回自定义 /%category%/%postname%/,然后再试一次。如果我不将 /%category%/ 放在永久链接中,它将起作用。 【参考方案1】:好的。我的错。问题是帖子的主要默认类别设置为“常规”。当我创建 CPT 时,我还创建了一个名为“General”的类别。 WordPress变得困惑。我将主要帖子类别重命名为“新闻”,现在一切正常。
【讨论】:
以上是关于将类别添加到永久链接时,WordPress CPT 会导致 404的主要内容,如果未能解决你的问题,请参考以下文章
如何将“项目”永久链接更改为 Wordpress 中帖子的类别
如何获取在 Wordpress 中按类别过滤的自定义帖子类型的永久链接?