【问题标题】:Reordering array of objects in Wordpress在 Wordpress 中重新排序对象数组
【发布时间】:2013-11-30 08:46:35
【问题描述】:

我正在编写自定义 WordPress 脚本,该脚本应该显示元素中的所有自定义分类。其中一些元素有子元素,而另一些则没有。这是表单的代码:

                            <?php 
                            $terms = get_terms("location", "hide_empty=0");

                             $count = count($terms);
                             if ( $count > 0 ){
                                 foreach ( $terms as $term ) {
echo "<option value='" . $term->slug . "'>" . $term->name ."</option>";
                                 }
                             }

                        echo "</select>";

问题是,它按字母顺序显示所有元素,包括父母和孩子。我希望孩子嵌套在父母之下,但我不知道如何。谁能提供一些帮助?

这里是 $terms 数组的 print_r:

Array
(
[0] => stdClass Object
    (
        [term_id] => 18
        [name] => Andrijevica
        [slug] => andrijevica
        [term_group] => 0
        [term_taxonomy_id] => 18
        [taxonomy] => location
        [description] => 
        [parent] => 0
        [count] => 0
    )

[1] => stdClass Object
    (
        [term_id] => 19
        [name] => Berane
        [slug] => berane
        [term_group] => 0
        [term_taxonomy_id] => 19
        [taxonomy] => location
        [description] => 
        [parent] => 0
        [count] => 0
    )

[2] => stdClass Object
    (
        [term_id] => 17
        [name] => Bijelo Polje
        [slug] => bijelo-polje
        [term_group] => 0
        [term_taxonomy_id] => 17
        [taxonomy] => location
        [description] => 
        [parent] => 0
        [count] => 0
    )

.....
[29] => stdClass Object
    (
        [term_id] => 53
        [name] => Pobrežje
        [slug] => pobrezje
        [term_group] => 0
        [term_taxonomy_id] => 63
        [taxonomy] => location
        [description] => 
        [parent] => 4
        [count] => 0
    )

[30] => stdClass Object
    (
        [term_id] => 4
        [name] => Podgorica
        [slug] => podgorica
        [term_group] => 0
        [term_taxonomy_id] => 4
        [taxonomy] => location
        [description] => 
        [parent] => 0
        [count] => 7
    )

如您所见,父母的父母为 0。子级的父级值设置为父级的 term_id。例如 [30] 是 [29] 的父级。

【问题讨论】:

  • 这不是一个多维数组。它是一个对象数组..
  • 原谅我的无知,我编辑了帖子。
  • 无需原谅 :-) 我之所以这么说是因为语法发生了变化……例如:$term[0]-&gt;slug

标签: php arrays wordpress


【解决方案1】:

在循环中使用get_term_children()

例子:

$taxonomyName = "location"
$terms = get_terms($taxonomyName,array('parent' => 0));
foreach($terms as $term) {
    echo '<a href="'.get_term_link($term->slug,$taxonomyName).'">'.$term->name.'</a>';
    $term_children = get_term_children($term->term_id,$taxonomyName);
    echo '<ul>';
    foreach($term_children as $term_child_id) {
        $term_child = get_term_by('id',$term_child_id,$taxonomyName);
        echo '<li><a href="' . get_term_link( $term_child->name, $taxonomyName ) . '">' . $term_child->name . '</a></li>';
    }
    echo '</ul>';
}

抱歉,该示例是从我的一个项目中剪切和粘贴的,并将创建一个嵌套的 UL。如果您需要它作为下拉选项 - 好吧 - 我相信您可以根据需要对其进行修改..

【讨论】:

  • 一切正常!太感谢了!我已经为此绞尽脑汁了一段时间:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2018-08-31
  • 2011-11-01
相关资源
最近更新 更多