多个档案以显示父类别和子类别内容

时间:2015-01-26 作者:Mark

我正在开发一个具有自定义类型的插件,我的问题是,我需要显示所选子类别(从父类别中选择)的存档,并在页面中显示该子类别的一些事件。

在我的插件中,我有:

if ($post->post_type == \'events\') {
  if(is_single()) {
    .....
  } elseif(is_archive()) {
    $template_path = dirname( __FILE__ ) . \'/views/archive-events.php\';
  }
}
在存档事件中。php,我有父类别。当我单击一个父类别时,我必须转到另一个存档,其中包含来自该父类别的子类别列表,再单击一个子类别,我必须转到另一个存档页面,其中包含来自该子类别的所有事件。

在我的存档事件中。php我有以下代码:

<?php
    $terms = get_terms( \'event_category\', array(
    \'orderby\'    => \'count\',
    \'hide_empty\' => true
) );

foreach( $terms as $term ) {

    // Check and see if the term is a top-level parent. If so, don\'t display it.
    $parent = $term->parent;
    if ( $parent!=\'0\' ) {
        // Define the query
        $args = array(
            \'post_type\' => \'events\',
            \'event_category\' => $term->slug
        );
        $query = new WP_Query( $args );

        echo\'<a href="\'.home_url().\'/big-events/\'.$term->slug.\'"><span class="cat-name">\' . $term->name . \'</a>\';

    }

}           
?>
实际上,我的问题是,如果我单击一个子类别,插件会在相同的is\\u archive()页面中用正确的URL重定向我,但会显示所有其他子类别。

是否有方法根据子类别定义不同的Is\\u archive()页面?欢迎任何帮助!

非常感谢。

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

通过下面的内容,您可以从event\\u category taxonomyNote中获取术语,但您总是获取相同的术语。

$terms = get_terms( 
    \'event_category\', 
    array(
        \'orderby\'    => \'count\',
        \'hide_empty\' => true
    )
);
如果只想从当前页面中获取子项,则应获取当前术语,并将术语列表设置为仅获取当前术语的子项:

$current_term = $wp_query->queried_object;
$terms = get_terms(
    \'event_category\',
    array(
        \'orderby\' => \'count\',
        \'hide_empty\' => true,
        \'parent\' => $current_term->parent
    )
);
你在这里骑自行车穿过它们。。。

foreach( $terms as $term ) {

    // Check and see if the term is a top-level parent. If so, don\'t display it.
    $parent = $term->parent;
    if ( $parent!=\'0\' ) {

        // Define the query
您试图对此查询执行什么操作?您正在创建它,但却什么都不做。

        $args = array(
            \'post_type\' => \'events\',
            \'event_category\' => $term->slug
        );
        $query = new WP_Query( $args );
这只是写出一个链接:

        echo\'<a href="\'.home_url().\'/big-events/\'.$term->slug.\'"><span class="cat-name">\' . $term->name . \'</a>\';
最好采取以下措施:

        echo \'<a href="\' . get_permalink($term) . \'"><span class="cat-name">\' . $term->name . \'</span></a>\';
    }

}           
?>
重写一点:

<?php
$current_term = $wp_query->queried_object;
$children = get_terms(
    \'event_category\',
    array(
        \'orderby\' => \'count\',
        \'hide_empty\' => true,
        \'parent\' => $current_term->parent
    )
);
if ( !is_wp_error( $children ) && is_array( $children ) && 0 < count( $children ) ) {
    foreach ( $children as $child_term ) {
        $child_link = get_permalink( $child_term );
        echo <<<HTML
<a href="{$child_link}"><span class="cat-name">{$child_term->name}</span></a>
HTML;

    }
} else {
    # No child terms were found
}
?>

结束

相关推荐

必须使用插件自动加载器:如何正确使用get_plugins()?

我的autoloader类负责加载必须使用的插件,这些插件不位于mu-plugins 文件夹要定位它们,我需要使用get_plugins() 作用According to Codex, 该函数接受一个参数:$plugin\\u folder(string)(可选):单个插件文件夹的相对路径。我的文件层次结构如下所示:|-- /mu-plugins | |-- autoload.php // only includes wpmu/autoload.php&#