Php 使用帖子类型模板自定义帖子类型URL重写
我正在为一家视频制作公司建立一个Wordpress网站。他们为成人和儿童制作视频,因此我在后端拆分帖子以保持结构。因此,设置如下所示:Php 使用帖子类型模板自定义帖子类型URL重写,php,wordpress,custom-post-type,permalinks,Php,Wordpress,Custom Post Type,Permalinks,我正在为一家视频制作公司建立一个Wordpress网站。他们为成人和儿童制作视频,因此我在后端拆分帖子以保持结构。因此,设置如下所示: 两个名为productions\u big和productions\u small的自定义帖子类型 名为Productions的页面,放置在主导航中,带有指向的链接 对于大页面和小页面 一个页面列出了productions_big的帖子,一个页面列出了 你的作品很小。页面名称用于大页面和小页面,两者都是Productions页面的子页面 URL对于页面来说非常
- 两个名为productions\u big和productions\u small的自定义帖子类型
- 名为Productions的页面,放置在主导航中,带有指向的链接 对于大页面和小页面
- 一个页面列出了productions_big的帖子,一个页面列出了 你的作品很小。页面名称用于大页面和小页面,两者都是Productions页面的子页面
- URL对于页面来说非常好,因为我建立了相关页面的父/子关系。example.com/productions将指向正确的页面,example.com/productions/for-big和example.com/productions/for-small do也将指向正确的页面
- 由于与此问题无关的原因,模板 CPT不同,但在某些情况下,大模板用于小模板,反之亦然。这背后没有实际的逻辑,因此决定使用哪个模板是通过Wordpress 4.7引入的功能在后端完成的
add_action('init', 'all_custom_post_types');
function all_custom_post_types() {
$types = array(
array('the_type' => 'productions_big',
...
array('the_type' => 'productions_small',
...
);
foreach ($types as $type) {
$the_type = $type['the_type'];
...
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capabilities' => array(
...),
'rewrite' => array('has_archive' => false, 'slug' => 'bla', 'with_front' => false),
'has_archive' => false,
'map_meta_cap' => true,
'hierarchical' => false,
'menu_position' => 5,
'supports' => array('title','editor','thumbnail', 'taxonomies'),
'taxonomies' => array( 'category' )
);
register_post_type($the_type, $args);
}
}
如您所见,我尝试了“重写”=>array('slug'=>'bla'),因为我想知道当我编写“重写”=>array('slug'=>'productions/for big'时,它是否因为页面名称冲突而无法工作
但是不管我给slug什么值,它总是将我重定向到index.php
我认为它不起作用的原因是我分配post模板的方式(记住:作为后端的post属性,而不是专用的单个xxx.php文件),但我在任何地方都找不到解决方案。所有提出问题的寻求解决方案的人都在用老式的单名方式分配模板(这对我来说是不可能的)
旁注:最终目标是使slug“动态”。这意味着,如果页面名称在后端发生更改,它会发生更改。我可能会尝试,但在此之前,我必须解决这里描述的基本问题
任何想法都值得赞赏。感谢您阅读本文。哦,孩子,看来您必须发布您的问题,以便自己找到答案。在尝试设置另一个CPT后,一切都很顺利 这让我调查了之前CPT的注册情况。正如您在上面看到的,我试图在one函数中注册我的CPT
function all_custom_post_types() {
$types = array(
array('the_type' => 'productions_big', ...
array('the_type' => 'productions_small', ...
);
foreach ($types as $type) {
$args = array(...
'rewrite' => array('slug' => 'bla'),...
);
register_post_type($the_type, $args);
}
}
因此,最终,我的页面的slug和自定义post类型之间没有冲突,而是将一个相同的slug分配给两个不同的post类型 哦,天哪,看来你得把你的问题贴出来才能自己找到答案。在尝试设置另一个CPT后,一切都很顺利 这让我调查了之前CPT的注册情况。正如您在上面看到的,我试图在one函数中注册我的CPT
function all_custom_post_types() {
$types = array(
array('the_type' => 'productions_big', ...
array('the_type' => 'productions_small', ...
);
foreach ($types as $type) {
$args = array(...
'rewrite' => array('slug' => 'bla'),...
);
register_post_type($the_type, $args);
}
}
因此,最终,我的页面的slug和自定义post类型之间没有冲突,而是将一个相同的slug分配给两个不同的post类型