简体   繁体   English

小部件类别WordPress,更改显示计数

[英]Widget Categories WordPress, change display count

Using WordPress and Genesis Framework If I add the widget "Categories" in the sidebar I display the count of items, the number is enclosed in parentheses. 使用WordPress和Genesis Framework如果我在侧边栏中添加小部件“Categories”,我会显示项目的数量,数字括在括号中。 For example: (2), (12), (7)... 例如: (2), (12), (7)...

To achieve this, I opened the file wp-includes/category-template.php I found the following line: 为实现这一点,我打开了文件wp-includes / category-template.php我找到了以下行:

if ( !empty($show_count) )
        $link .= ' (' . number_format_i18n( $category->count ) . ')';

and I edited in the following way: 我按以下方式编辑:

if ( !empty($show_count) )
        $link .= ' <div class="myclass">' . number_format_i18n( $category->count ) . '</div>';

in the file style.css I created the class .myclass and everything works beautifully, as in the following example: http://i.imgur.com/vdtCbjm.jpg 在文件style.css中,我创建了类.myclass,一切都很好用,如下例所示: http ://i.imgur.com/vdtCbjm.jpg

But I do not think it's a good thing modifying the core of WordPress. 但我不认为修改WordPress的核心是一件好事。 How can I get the same result without changing wordpress? 如何在不改变wordpress的情况下获得相同的结果? I want to use that piece of code in the functions.php file of my theme, but I do not know how to do that. 我想在我的主题的functions.php文件中使用那段代码,但我不知道该怎么做。 I'm not a programmer, and to find that piece of code have gone mad. 我不是程序员,并发现那段代码已经疯了。 I Use Genesis Framework, with theme child sample. 我使用Genesis Framework,主题子样本。

Thank you for any help 感谢您的任何帮助

You can get same result by creating another widget in theme. 您可以通过在主题中creating another widget来获得相同的结

Following code will create another Widget . 以下代码将创建另一个Widget

And you also can change display by changes $replacement String. 您还可以通过更改$replacement String来更改显示。 Remember, Don't change $1, $2, $3, $4 variables. 请记住,不要更改$1, $2, $3, $4变量。

Add This code into your theme's functions.php file:- 将此代码添加到theme's functions.php文件中: -

// Register our tweaked Category Archives widget
function myprefix_widgets_init() {
    register_widget( 'WP_Widget_Categories_custom' );
}
add_action( 'widgets_init', 'myprefix_widgets_init' );

/**
 * Duplicated and tweaked WP core Categories widget class
 */
class WP_Widget_Categories_Custom extends WP_Widget {

    function __construct()
    {
        $widget_ops = array( 'classname' => 'widget_categories widget_categories_custom', 'description' => __( "A list of categories, with slightly tweaked output.", 'mytextdomain'  ) );
        parent::__construct( 'categories_custom', __( 'Categories Custom', 'mytextdomain' ), $widget_ops );
    }

    function widget( $args, $instance )
    {
        extract( $args );

        $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories Custom', 'mytextdomain'  ) : $instance['title'], $instance, $this->id_base);

        echo $before_widget;
        if ( $title )
            echo $before_title . $title . $after_title;
        ?>
        <ul>
            <?php
            // Get the category list, and tweak the output of the markup.
            $pattern = '#<li([^>]*)><a([^>]*)>(.*?)<\/a>\s*\(([0-9]*)\)\s*<\/li>#i';  // removed ( and )

            // $replacement = '<li$1><a$2>$3</a><span class="cat-count">$4</span>'; // no link on span
            // $replacement = '<li$1><a$2>$3</a><span class="cat-count"><a$2>$4</a></span>'; // wrap link in span
            $replacement = '<li$1><a$2><span class="cat-name">$3</span> <span class="cat-count">($4)</span></a>'; // give cat name and count a span, wrap it all in a link


        $args = array(
                'orderby'       => 'name',
                'order'         => 'ASC',
                'show_count'    => 1,
                'title_li'      => '',
                'exclude'       => '2,5,31',
                'echo'          => 0,
                'depth'         => 1,
        );

            $subject      = wp_list_categories( $args );
            echo preg_replace( $pattern, $replacement, $subject );
            ?>
        </ul>
        <?php
        echo $after_widget;
    }

    function update( $new_instance, $old_instance )
    {
        $instance = $old_instance;
        $instance['title'] = strip_tags( $new_instance['title'] );
        $instance['count'] = 1;
        $instance['hierarchical'] = 0;
        $instance['dropdown'] = 0;

        return $instance;
    }

    function form( $instance )
    {
        //Defaults
        $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
        $title = esc_attr( $instance['title'] );
        $count = true;
        $hierarchical = false;
        $dropdown = false;
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title', 'mytextdomain' ); ?>"><?php _e( 'Title:', 'mytextdomain'  ); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
        </p>
        <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>" <?php checked( $count ); ?> disabled="disabled" />
        <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e( 'Show post counts', 'mytextdomain'  ); ?></label>
        <br />
        <?php
    }
}

Hope this will help you. 希望这会帮助你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM