作为我的自定义帖子类型的子级的普通页面

时间:2013-10-23 作者:Wordpressor

这是一个棘手的问题,我有一个自定义的帖子类型叫做“dictionary”,用户在那里添加“definitions”,自动将其放入正确的类别中(例如,如果用户添加“Apple”,它位于“A”下)。

URL如下所示:

博客/字典-字典欢迎页面-以“x”字母开头的定义列表-博客/字典/x/Xavier-单词“Xavier”的定义现在,我想添加普通的WordPress页面,并以某种方式将其显示在:

博客/词典/规则等。

我正在创建新页面,并将“Dictionary”页面(博客/字典)设置为它们的父页面,这样它们就位于它们应该位于的位置,但根本不显示任何内容,也不显示任何内容。我完全不知道如何解决它。我无法将它们添加到“dictionary”自定义帖子类型中,因为它只包含定义。

有什么想法吗?我宁愿避免mod\\u重写(因为我希望我的页面是“字典”的子页面,而不是硬链接的普通页面)。

In short words: I need two types of elements under one Custom Post Type.

UPDATE

看起来,当我的“字典”本身是一个孩子时,它就会起作用,例如:

博客/字典/作者-不显示任何内容?

1 个回复
最合适的回答,由SO网友:Matthew Boynes 整理而成

如果是我,我会这样做。

序言假设以下数据结构:

帖子类型:“dictionary”(字典)分类:“dictionary\\u category”(字典分类),术语仅限于单个字母和所需URL:

词典页面(应在开箱即用)/dictionary/rules/=>页面/dictionary/x/=>分类法存档/dictionary/x/xavier/=>单柱视图/h2>1。设置帖子类型和分类URL

注册帖子类型时rewrite 参数应为,

\'rewrite\' => array( \'slug\' => \'dictionary/%dictionary_category%\' )
注册分类时rewrite 参数应为,

\'rewrite\' => array( \'slug\' => \'dictionary\' )
您需要筛选post_type_link 因为重写标签(%dictionary_category%) 在重写段塞中。下面是它的样子:

function wpse_119806_post_type_link( $post_link, $post, $leavename, $sample ) {
    if ( \'dictionary\' == $post->post_type ) {
        if ( $categories = get_the_terms( $post->ID, \'dictionary_category\' ) ) {
            return str_replace( \'%dictionary_category%\', array_pop( $categories )->slug, $post_link );
        }
    }

    return $post_link;
}
add_filter( \'post_type_link\', \'wpse_119806_post_type_link\', 10, 4 );
现在,/dictionary/x/works和/dictionary/x/xavier/works。

2。在这里设置页面URL,我们将利用dictionary\\u类别术语不会超过1个字符这一事实。在/dictionary/和多个字符之后的任何内容都将假定为一页。

add_action( \'init\', \'wpse_119806_rewrite_rules\' );
function wpse_119806_rewrite_rules() {
    add_rewrite_rule( \'(dictionary/[^/]{2,}?)/?$\', \'index.php?pagename=$matches[1]\', \'top\' );
}
刷新重写规则(转到Settings → Permalinks 然后单击“保存更改”),一切都应按预期进行。

注:这忽略了/博客/;我假设您已经解决了这个问题,所以如果需要,请更改此代码以将其添加到中wpse_119806_rewrite_rules 还有其他呼叫add_rewrite_rule().

结束

相关推荐

Temp URL Redirect Loop

我试图通过hostgator使用临时URL(IP/~用户名/域)建立我的网站,但我遇到了一些问题。我已进入数据库,并用新的临时URL替换了旧域的所有实例。问题是我遇到了重定向循环。我在某个地方读到了试图重置永久链接的内容,但我没有访问管理面板的权限。我不知道还有什么可以修复重定向循环。我甚至换了我的。使用新的htaccess,仍然可以获得重定向循环。这是我当前的wp配置文件:define(\"WP_SITEURL\",\"http://IP/~username/example.com\"); de