默认帖子和自定义分类的固定链接帮助

时间:2016-08-12 作者:61Pixels

目前正在建立一个自定义杂志网站,并遇到一些重写问题。

我使用的是默认的Posts post类型,并为issue(issue\\u cat)添加了自定义分类法。大多数情况下,一切都很好,但我正在努力使永久链接结构正确。我还将默认的“类别”用于文章的一般类别。

如果有必要,我还有一个带有slug“issues”的页面,它只是一个带有自定义页面模板的页面,显示了issue\\u cats分类法中术语的自定义布局。

查看所有问题的链接结构是:站点。com/问题/

个别问题的链接结构如下:站点。com/issues/issues name,效果很好。

问题在于单一岗位。理想的URL应该是:站点。com/issues/issues name/post name

我尝试了几件事,在某些情况下,使单个帖子正常工作/具有正确的slug,但这会导致网站上所有常规页面返回404。谷歌搜索了几天,我想我在某一点上找到了解决方案,但从4.5.2开始显然不起作用。有什么想法吗?

以下是我的自定义问题分类代码:

function zbt_register_custom_tax() {
    $labels = array(
        \'name\'              => \'Issue\',
        \'singular_name\'     => \'Issue\',
        \'search_items\'      => \'Search Issues\',
        \'all_items\'         => \'All Issues\',
        \'parent_item\'       => \'Parent Issue\',
        \'parent_item_colon\' => \'Parent Issue\',
        \'edit_item\'         => \'Edit Issue\',
        \'update_item\'       => \'Update Issue\',
        \'add_new_item\'      => \'Add Issue\',
        \'new_item_name\'     => \'New Issue\',
        \'menu_name\'         => \'Issues\'
    );
    $args = array(
        \'labels\' => $labels,
        \'show_admin_column\' => true,
        \'hierarchical\' => true,
        \'rewrite\' => array( \'slug\' => \'issues\', \'with_front\' => false ),
        \'show_ui\' => true,
        \'query_var\' => true,
        \'public\' => true,
    );
    register_taxonomy( \'issue_cats\', \'post\', $args );
}
add_action( \'init\', \'zbt_register_custom_tax\', 99 );

1 个回复
SO网友:61Pixels

这就是我们最终得出的似乎有效的结论。我不确定这是最好的还是正确的方法,但它似乎起到了作用。有人看到这条路线有什么问题吗?

//Re-register default post type for rewrite purposes.
function zbt_reregister_post() {
    register_post_type( \'post\', array(
        \'labels\' => array(
            \'name_admin_bar\' => _x( \'Article\', \'add new on admin bar\' ),
        ),
        \'public\'  => true,
        \'_builtin\' => false,
        \'_edit_link\' => \'post.php?post=%d\',
        \'capability_type\' => \'post\',
        \'map_meta_cap\' => true,
        \'hierarchical\' => false,
        \'rewrite\' => array( \'slug\' => \'/issues/%issue_cats%\', \'with_front\' => false ),
        \'query_var\' => false,
        \'supports\' => array( \'title\', \'editor\', \'author\', \'excerpt\', \'comments\', \'revisions\'),
    ) );
}
add_action( \'init\', \'zbt_reregister_post\', 99 );

// Rewrite default post permalinks to add issue (e.g. /summer-2016/post-name/).
function zbt_add_issue_to_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == \'post\' ){
        $terms = wp_get_object_terms( $post->ID, \'issue_cats\' );
        if( $terms ){
            return str_replace( \'%issue_cats%\' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( \'post_type_link\', \'zbt_add_issue_to_permalinks\', 1, 2 );

相关推荐

Slug for custom post type

我在我的网站上使用网页和博客帖子。页面获取URL示例。org/%postname%/,并基于Permalink设置,posts获取URL示例。组织/博客/%postname%/。完美的我有一个自定义的帖子类型,由我网站上的另一个组用于他们的网页。在注册post类型时,我为它们提供了一个重写slug:\'rewrite\' => array(\'slug\' => \'ncfpw\'),然而,他们的页面得到了URL示例。组织/博客/ncfpw/%博文名%/我怎样才能摆脱;博客;在他们的URL中?