自定义重写固定链接不起作用

时间:2016-06-21 作者:Fred Collins

function create_posttype() {
    register_post_type( \'events\',
        array(
            \'labels\' => array(
                \'name\' => __( \'Events\' ),
                \'singular_name\' => __( \'Event\' )
            ),
            \'public\' => true,
            \'has_archive\' => true,
            \'rewrite\' => array(\'slug\' => \'%city%/events\'),
        )
    );
}
add_action( \'init\', \'create_posttype\' );

register_taxonomy(\'cities\', array(\'events\'), array(
    \'hierarchical\' => true,
    \'labels\' => $labels,
    \'show_ui\' => true,
    \'show_admin_column\' => true,
    \'query_var\' => true,
    \'rewrite\' => array( \'slug\' => \'city\' ),
  ));

function wpa_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == \'events\' ){
        $terms = wp_get_object_terms( $post->ID, \'cities\' );
        if( $terms ){
            return str_replace( \'%city%\' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( \'post_type_link\', \'wpa_permalinks\', 1, 2 );
permalink结构正确(例如。http://www.example.org/new-york/events/event-name) 但我有两个问题:

模板单一事件。php未显示,显示404http://www.example.org/new-york/events 应显示存档

1 个回复
SO网友:TheDeadMedic

您需要使用%cities% (匹配分类的名称)。

我以为%city%只是一个带有随机名称的占位符。

不完全是-它被称为permalink结构(permastruct),用于映射到正则表达式。当你打电话的时候register_taxonomy, 它会自动注册一个与分类法同名的新permastruct。

阅读WP_Rewrite::add_permastruct 希望这能提供更多的见解。

Update: 让我们澄清一下我们的目标:

  • /city/new-york/events/ - 全部的events 附加到的帖子new-york
  • /city/new-york/restaurants/ - 全部的restaurants 附加到的帖子new-york
  • /city/new-york/events/foobar/ - 仅有一个的events “foobar”
您是否需要层次结构的slugcities? i、 e。england/london (回答“是”会让事情变得困难)。或者是london 足够的

Update 2: 怎么样

  • /events/new-york/ - 全部的events 附加到的帖子new-york
  • /restaurants/new-york/ - 全部的restaurants 附加到的帖子new-york
  • /restaurants/new-york/foobar/ - 仅有一个的events “foobar”

相关推荐