Wordpress - 在窗口小部件中显示当前帖子的类别描述

时间:2014-05-09 18:05:00

标签: wordpress post widget categories

我使用此插件在窗口小部件中显示活动类别或子类别说明。

http://wordpress.org/support/plugin/category-description-widget

直接从菜单或其他小部件单击类别或子类别时,这非常有用。

但是,我也希望在查看当前帖子时显示此小部件。 任何帮助将不胜感激。

EG。让我们说我们的类别和子类别是相应的结构:

  • 地理
    ----海洋
    ----土地

目前的工作原理如下:

当我点击地理位置时,会显示地理位置下的所有帖子。 在小部件中,插件显示地理位置的描述。

当我点击海洋时,会显示海洋下的所有帖子。 在小部件中,插件显示Ocean的描述。

我想补充一下:

当我在Ocean下的帖子中时,小部件应显示Ocean的描述。

以下是插件代码:

class Category_Description_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'category_description_widget', // Base ID
            'Category Description Widget', // Name
            array( 'description' => 'A widget with the category description', ) // Args
        );
    }
    public function widget( $args, $instance ) {
        if(!is_tax() && !is_category() && !is_tag()){
            return false;
        }
        extract( $args );
        echo $before_widget;
        echo term_description();
        echo $after_widget;
    }
}

function category_description_widget_init(){
    register_widget('Category_Description_Widget');
}


add_action( 'widgets_init', 'category_description_widget_init');

1 个答案:

答案 0 :(得分:0)

应该这样做。

class Category_Description_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'category_description_widget', // Base ID
            'Category Description Widget', // Name
            array( 'description' => 'A widget with the category description', ) // Args
        );
    }
    public function widget( $args, $instance ) {

        global $post;

        if(!is_tax() && !is_category() && !is_tag() && !is_single()){
            return false;
        }

        extract( $args );

        if ( is_single() ) {
            //Get current post category.
            $cat = get_the_category($post->ID);
            echo $before_widget;
            echo $cat[0]->category_description;
            echo $after_widget;

        } else {
            echo $before_widget;
            echo term_description();
            echo $after_widget;
        }
    }
}

function category_description_widget_init(){
    register_widget('Category_Description_Widget');
}


add_action( 'widgets_init', 'category_description_widget_init');