我正在努力实现的目标
我一直在尝试完成以下任务:
症状
结果永久链接结构看起来没问题(mypage.com/fleets/fleets/fleet-europe/red-family-van),但访问任何车辆帖子时,wordpress无法正常重写,网络选项卡显示404和wordpress默认返回到只有页眉和页脚而没有内容的空白页面(因为没有指定404页面)。
我尝试了什么
首先,我试图从“欧洲舰队”页面中取消“红色家庭面包车”车辆。然后一切都恢复正常。使用任何页为车辆提供帮助会再次破坏永久链接。
其次,我试图尝试
'hierarchical' => true,
'rewrite' => array('slug' => 'fleets', 'with_front' => true, 'pages' => true),
我的post-vehicles.php中的参数(粘贴在下面)。无论'pages'是真还是假,无论是slug,无论是'with_front,将页面育成车辆总是会破坏。
然后我尝试用各种各样的插件来分析和修改固定链接结构,这些插件都没有帮助我找出问题 - 根据它们“一切都应该正常工作:)”
最后,我已经阅读了似乎处理类似问题的任何stackoverflow帖子,但人们似乎只是指向设置我已经建立的post-type重写参数。
我的代码是什么样的
Functions.php - 通过元数据块允许后端的车辆的父级页面:
//removing the standard hierarchy parenting metabox, because that only allows parenting vehicles with vehicles
add_action('admin_menu', function() {
remove_meta_box('pageparentdiv', 'vehicles', 'normal');
});
//adding a custom metabox that allows the parenting of pages to vehicles
add_action('add_meta_boxes', function() {
add_meta_box('vehicle-parent', 'Parent Page', 'vehicle_attributes_meta_box', 'vehicles', 'side', 'high');
});
// building the dropdown for the pages to be selectable in the metabox
function vehicle_attributes_meta_box($post) {
$post_type_object = get_post_type_object($post->post_type);
if ( $post_type_object->hierarchical ) {
$pages = wp_dropdown_pages(array(
'post_type' => 'page',
'selected' => $post->post_parent,
'name' => 'parent_id',
'show_option_none' => __('(no parent)'),
'sort_column' => 'menu_order, post_title',
'echo' => 0
));
if ( ! empty($pages) ) {
echo $pages;
}
}
}
post-vehicles.php - 设置自定义帖子类型车辆:
function fleet_management_post_type_vehicles() {
$args = array(
'labels' => $labels,
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'taxonomies' => array('vehicles_category'),
'hierarchical' => true,
'rewrite' => array('slug' => 'fleets', 'with_front' => true, 'pages' => true),
'query_var' => true,
'show_in_nav_menus' => true,
'menu_icon' => 'dashicons-admin-post',
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'page-attributes'),
);
register_post_type('vehicles', $args);
}
add_action('init', 'fleet_management_post_type_vehicles');
赞赏所有指针!