2010-07-28 82 views
7

我有一个分类,taxonomy.php页面,需要看起来像这样:WordPress的 - 项自定义后类型房源的自定义分类页

自定义文章类型标题(资源)

自定义分类1 (资源类型)

资源类型期限1(白皮书)

  • 白皮书后1

    白皮书柱2

    白皮书柱3

资源类型期限2(画)

  • 画张贴1

    画张贴2

    视频信息3

试图理解Wordpress 3.0的所有新文档,但它只是让我更加困惑,因为它似乎与2.8混合在一起。

+0

对不起,有点困惑 - 所以你想列出所有的自定义职位类型,按自定义税率分类? – TheDeadMedic 2010-07-29 13:54:10

+1

我想列出自定义帖子类型的所有帖子,按自定义分类术语排序。 – manon1165 2010-08-16 21:35:19

回答

1

嘿manon1165,我其实刚刚完成了这个。是一个巨大的痛苦,希望我的代码片段将帮助!

我做了一个自定义页面模板。并没有沿着

<?php $categories = get_terms('taxonomy-name', 'orderby=name&hide_empty=0'); $cats = object_to_array($categories); ?> 

线的东西现在,只需print_r($cats),你会看到类别的阵列。

您将需要将对象转换为数组,我这样做。

function object_to_array($data) 
{ 
    if(is_array($data) || is_object($data)) 
    { 
    $result = array(); 
    foreach($data as $key => $value) 
    { 
     $result[$key] = object_to_array($value); 
    } 
    return $result; 
    } 
    return $data; 
} 

我做

​​

希望帮助!

+0

谢谢,它帮助很多,但你能告诉我如何从自定义帖子类型中获取内容。我正在使用自定义帖子类型插件,并希望使用自定义类别列表获取数据。请帮帮我。 – 2013-05-17 11:05:16

+0

在过去几年中,我并没有真正处理WP。也许开始一个新的问题? – LostInQuery 2013-06-05 19:56:55

6

没有必要将对象转换为数组,您可以完美地使用对象而不会太麻烦。什么是(至少对我来说)好奇的是,你得到的东西是这样的:

Array 
    (
     [0] => stdClass Object 
      (
       [term_id] => 7 
       [name] => Magister comunicaciones aplicadas 
       [slug] => magister-comunicaciones-aplicadas 
       [term_group] => 0 
       [term_taxonomy_id] => 7 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 4 
     ) 

     [1] => stdClass Object 
      (
       [term_id] => 8 
       [name] => Engagement marketing 
       [slug] => engagement-marketing 
       [term_group] => 0 
       [term_taxonomy_id] => 8 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 5 
     ) 
) 

它基本上,对象的数组,因此你对待他们的方式。例如,如果我想在第一个的名字:

$myterms = get_terms('taxonomy-name', 'orderby=none&hide_empty');  
echo $myterms[0]->name; 

如果您需要通过元素迭代,你仍然可以使用foreach();

foreach ($myterms as $term) { ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 
} ?> 

这样你就可以从你的分类中发表文章。

对于自定义文章类型,你必须创建一个循环是这样的:

$args = array(
    'post_type' => 'post-type-name', 
    'taxonomy' => 'term' 
    //for example 
    //'resources' => 'videos' 
); 

// assigning variables to the loop 
global $wp_query; 
$wp_query = new WP_Query($args); 

// starting loop 
while ($wp_query->have_posts()) : $wp_query->the_post(); 

the_title(); 
blabla.... 

endwhile; 

然后您可以创建一个每个每个分类/学期:)的多个循环。你可以在第一个循环中包含第二个循环,并将变量分配给分类(资源ie)和它所拥有的术语(如果你想要变得更加花哨(不想重复自己一百次)视频)(从你的例子只有最后一个)。这个想法是,你将有一个正常的(典型的)wordpress循环,每个术语都限制为自定义后期类型

foreach ($myterms as $term) : ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 

     $term_name = $term->slug; 

     $args = array(
     'post_type' => 'post-type-name', 
     'taxonomy' => "$term_name" 
     ); 

    // assigning variables to the loop 
    global $wp_query; 
    $wp_query = new WP_Query($args); 

    // starting loop posting only 
    while ($wp_query->have_posts()) : $wp_query->the_post(); 

    the_title(); 
    blabla.... 

    endwhile; 

endforeach; ?> 

很明显,你可以做相反的事情太多,建立正常循环的单模板自定义类型(它的貌似只有一个),以及里面包含了所有的自定义条款。

不是很优雅,但这是我能想出来的最佳方式:P。希望有人能够理解这一点,听起来很混乱。

也许可以用一些回调函数吗?

+0

您在上次的代码示例中有错误。你应该删除;从该行的末尾开始:'taxonomy'=>“$ term_name”; – Pascut 2014-03-13 10:29:57

+0

更正。谢谢 :)。 – 2014-03-13 20:06:29

相关问题