programing

위젯 카테고리 워드프레스, 디스플레이 수 변경

skycolor 2023. 10. 24. 21:10
반응형

위젯 카테고리 워드프레스, 디스플레이 수 변경

WordPress 및 Genesis Framework 사용 사이드바에 위젯 "카테고리"를 추가하면 항목 수가 표시되며 숫자는 괄호 안에 포함됩니다.예를 들어,(2), (12), (7)...

이를 위해 wp-inclubs/category-template 파일을 열었습니다.php 나는 다음 줄을 찾았습니다.

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

다음과 같은 방법으로 편집했습니다.

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

파일 스타일로. css 나는 클래스를 만들었습니다.내 클래스는 다음 예와 같이 모든 것이 아름답게 작동합니다. https://i.stack.imgur.com/iSlrs.jpg

하지만 워드프레스의 핵심을 수정하는 것은 좋은 일이 아니라고 생각합니다.어떻게 하면 워드프레스를 바꾸지 않고 같은 결과를 얻을 수 있을까요?저는 그 기능들에 그 코드 조각을 사용하고 싶습니다.제 테마의 php 파일인데 어떻게 하는지 모르겠습니다.저는 프로그래머가 아닙니다. 그리고 그 코드 조각이 미쳐버렸다는 것을 발견했습니다.아이 샘플을 주제로 한 창세기 프레임워크를 사용합니다.

도와주셔서 감사합니다.

다음과 같은 결과를 얻을 수 있습니다.creating another widget주제가 있는

다음 코드는 다른 코드를 만듭니다.Widget.

또한 변경사항별로 디스플레이를 변경할 수 있습니다.$replacement끈.변수를 변경하지 마십시오.

이 코드를 사용자의 코드에 추가합니다.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
    }
}

이것이 당신에게 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/24057984/widget-categories-wordpress-change-display-count

반응형