wordpress重定向到没有page_id的single-post.php

时间:2017-09-06 20:57:03

标签: wordpress redirect

我是wordpress的新手,我尝试做一个看起来像这样的网址重写

mysitename /采用/ petspecies / petname

一切正常,直到petname部分,我无法重定向到我的single-adoption.php文件,而无需在重定向网址中对page_id进行硬编码。

以下是我自定义帖子的方式:

register_post_type(
'adoption',
array(
    'label' => 'Adoption',
    'labels' => array(
        'name' => 'Adoption',
        'singular_name' => 'Adoption'
    ),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'supports' => array(
        'title',
        'editor',
        'thumbnail'
    ),
    'has_archive' => true,
    'rewrite' => array(
        'with_front' => true,
        'slug' => 'adoption',
    ),
)

);

register_taxonomy(
'espece',
'adoption',
array(
    'label' => 'espece',
    'labels' => array(
        'name' => 'Espèce',
        'singular_name' => 'Espèce'
    ),
    'hierarchical' => false,
    'rewrite'      => array('slug' => 'adoption', 'with_front' => true)
)

);

这是我的重写规则

function adoption_cpt_generating_rule($wp_rewrite) {
$rules = array();
$terms = get_terms( array(
    'taxonomy' => 'espece',
    'hide_empty' => false,
) );

$post_type = 'adoption';
foreach ($terms as $term) {           
    $rules['^adoption/' . $term->slug . '/([^/]*)/?'] = 'index.php?post_type='.$post_type.'&page_id=4252&adoption=$matches[1]&name=$matches[1]';}

// merge with global rules
$wp_rewrite->rules = $rules + $wp_rewrite->rules;

}

add_filter('generate_rewrite_rules', 'adoption_cpt_generating_rule');

我的代码在重定向中使用硬编码的page_id工作正常,但是当我从网址中删除page_id时停止工作。

任何建议使它在没有page_id的情况下工作?

0 个答案:

没有答案