2017-01-10 40 views
0

我正在尝试创建一些帖子以显示在遵循相同URL结构的CPT分类标准页上。在WordPress中添加具有相同URL结构的分类下的页面

我有一个职位类型动物动物类别分类的,这些页面生成的网址是:

  • domain.com/animal
  • domain.com/animal-category

然后我想创建一个标准页面(不是pa这篇文章类型),这将有URL的RT:

  • domain.com/animal-category/page-name

结构上的页面是无关的动物的帖子,并可能是标准页面还是帖子类型,这并不重要。

经过研究和以前的知识,我找不到重写规则来强制页面使用domain.com/animal-category在添加页面名称之前 - 因为它已被重写为分类。

也许有一个完全不同的解决方案来实现分类列表中的页面(使用此URL结构)?

+0

您引用的分类是固定的还是不同页面的变量? –

+0

我正在尝试创建一个页面,您将与其中一个分类标准关联的页面将重写URL。我可以进行这种关系,但不能重写URL以使URL的起始地址与分类法URL相同。分类法可以是狗,猫,马。 – bigdaveygeorge

回答

0

你完全可以做到这一点:)

1)在你的主题创建动物分类模板,并将其命名为分类学动物category.php

2)在循环中使用的条件来获得显示项目(查询对象)如下:

<?php $querried_slug = get_queried_object()->slug; 

if($querried_slug=="page-name"){ //IT IS THE PAGE we have 


}else{ ?> 
<?php if (have_posts()) : ?> 


     <?php 
     // Start the Loop. 
     while (have_posts()) : the_post(); 

     // End the loop. 
     endwhile; 
    else : 

     echo "NO animals found :)"; 

    endif; 
<?php } ?> 
+0

对不起,我想你是误会 - 你写上面的代码将显示在页面domain.com/animal-category/内容,如果它存在,如果没有它会显示的类别。我想将页面与具有相同URL结构的动物类别相关联,例如domain.com/animal-category/page-name,然后我将使用上面使用的模板来显示类别本身上的这些页面的链接。 – bigdaveygeorge

0

我会接受你想要的网址是如下,

http://example.com/%taxonomy%/page-name 

请看看过滤器_get_page_link。虽然这个过滤器不打算与主题或插件开发一起使用,但您可以使用它来实现您的任务。

所以按如下方式使用它,

add_action('init', array($this, 'custom_rewrite_rules'), 1, 0); 
/* 
* Rewrite page urls 
* adding prefix to page urls 
*/ 
function custom_rewrite_rules() 
{ 
    global $wp_rewrite; 
    $wp_rewrite->add_rewrite_tag("%taxonomy%", '([^/]+)', 'taxonomy='); 
    $wp_rewrite->page_structure = $wp_rewrite->root. '%taxonomy%/%pagename%';   
} 

以上函数将创建所需的URL。现在使用过滤器将%taxonomy%更改为您的价值。

add_filter('_get_page_link', 'custom_taxonomy_page_link', 10, 2); 
function custom_taxonomy_page_link($link, $post_id) { 
    $link = str_replace('%taxonomy%', 'animal-category', $link); 
    return $link; 
} 

这没有得到正确测试,但很少有研究可能会帮助你。

相关问题