如何处理页面/分类/帖子的结构而不使WordPress与url混淆

时间:2017-03-30 作者:Antonios Tsimourtos

不知道我的头衔应该是什么。

我的问题开始于我看到分页不起作用,它重定向到404错误。阅读了许多帖子后,分页不起作用的原因是我有一个名为“Watches”的页面,而我的自定义帖子类型也是“Watches”,这不可能是相同的,因为wordpress与url混淆了。

所以我想以某种方式更改我的自定义帖子的名称,这样就不会有任何冲突。

我有以下信息:

手表:custom post type (mysite.com/watchs/rolex/title\\u of\\u watch)-单人

手表:page (mysite.com/watchs)-显示分类法的所有术语“taxwatches”

税务观察:taxonomy (rolex 是一个术语(例如)

我在帖子上使用重写,这样我就可以拥有这个结构->站点。com/custom\\u post\\u类型/术语/post\\u标题

目前我的页面“watches”和自定义帖子类型“watches”是相同的。

以下是注册自定义帖子类型的代码:

$args = array(
        \'labels\'             => $labels,
        \'public\'             => true,
        \'publicly_queryable\' => true,
        \'show_ui\'            => true,
        \'show_in_menu\'       => true,
        \'query_var\'          => true,
        \'rewrite\'            => array( \'slug\' => \'watches/%taxwatches%\', \'with_front\' => false,  ),
        \'capability_type\'    => \'post\',
        \'has_archive\'        => true,
        \'hierarchical\'       => false,
        \'menu_position\'      => null,
        \'taxonomies\'         => array( \'taxwatches\'),
        \'supports\'           => array( \'title\', \'editor\', \'thumbnail\', \'excerpt\', \'page-attributes\')
    );

    register_post_type( \'watches\', $args );
以下是分类代码:

   $args = array(
        \'public\'            => true,
        \'has_archive\'       => true,
        \'hierarchical\'      => true,
        \'labels\'            => $labels,
        \'show_ui\'           => true,
        \'show_admin_column\' => true,
        \'query_var\'         => true,
        \'rewrite\'           => array( \'slug\' => __(\'taxwatches\', \'Theme\'), \'with_front\' => false, ),
    );

    register_taxonomy( \'taxwatches\', array( \'taxwatches\' ), $args );
这是一个用于重写url的过滤器:

function products_permalink_structure($post_link, $post, $leavename, $sample)
{
    if ( false !== strpos( $post_link, \'%taxwatches%\' ) ) {
        $term = get_the_terms($post->ID, \'taxwatches\');

        if (is_array($term)) {
            $post_link = str_replace(\'%taxwatches%\', strtolower(array_pop($term)->name), $post_link);
        }
    }


    return $post_link;
}
我尝试了不同的事情,但它让我困惑,所以决定问一个问题。有什么想法或参考资料可以帮助你吗?

1 个回复
SO网友:Antonios Tsimourtos

我找到了一个解决方法,我添加了一些函数。php下面的代码:

此代码检查当前页面是否为page。如果不是佩奇,那就意味着是佩奇

我的网站。com/手表/术语/

否则,如果是第页

我的网站。com/手表

所以问题解决了。

add_filter(\'template_include\', \'template_include\');

function template_include($template) {

    $post_type = get_post_type();


   if(!is_page() && $post_type == null && !is_archive())
        return get_stylesheet_directory() . \'/taxonomy.php\';

    return $template;

}

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请