Wordpress Archives Widget - Настройка вывода html - PullRequest
3 голосов
/ 16 февраля 2011

Кажется, я все еще прижат к WordPress.Я добавил виджет «Архивы» на свою боковую панель и еще раз, вывод html - это дерьмо, он в основном имеет такую ​​структуру:

<li><a href="somelink">text</a> - (# of posts)</li>

Я хочу преобразовать его в:

<li><a href="somelink">text <small># of posts</small></a>

В отличие от плагинов, я не смог найти строку, которая создает вывод html на страницах php, предложенных / упомянутых сообществом wordpress, а именно functions.php, widgets.php и default-widgets.php

Я погуглил все возможные комбинации ключевых слов по этому вопросу и не смог найти что-то подходящее.

Вся помощь приветствуется

С уважением

G.Campos

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Проверьте general-template.php. Две функции wp_get_archives и get_archives_link. Вам нужно взломать wp_get_archives, чтобы изменить то, что загружается в $ text. Количество постов загружается в переменную $ after, которая размещается вне ссылки в get_archives_link. Вместо этого:

$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
if ( $show_post_count )
   $after = '&nbsp;('.$arcresult->posts.')' . $afterafter;

как то так:

$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
if ( $show_post_count )
   $text= $text.'&nbsp;<small>'.$arcresult->posts.'</small>';

Это только для Ежемесячного архива. Вам нужно будет внести изменения в блоки Годовой, Еженедельный и Ежедневный.

Редактировать: Самый простой способ исключить элемент <small> из заголовка ссылки - загрузить его в отдельную переменную в каждом блоке и затем передать его в модифицированный get_archives_link. В приведенном выше примере сразу после загрузки $ text просто загрузите это значение в $ title:

$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
$title = $text;
if ( $show_post_count )
   $text= $text.'&nbsp;<small>'.$arcresult->posts.'</small>';
$output .= get_archives_link($url, $text, $format, $before, $after, $title);

Затем измените get_archives_link:

function get_archives_link($url, $text, $format = 'html', $before = '', $after = '', $title = '') {
    $text = wptexturize($text);

    if($title == '')
        $title = $text;

    $title_text = esc_attr($title);
    $url = esc_url($url);

    if ('link' == $format)
        $link_html = "\t<link rel='archives' title='$title_text' href='$url' />\n";
    elseif ('option' == $format)
        $link_html = "\t<option value='$url'>$before $text $after</option>\n";
    elseif ('html' == $format)
        $link_html = "\t<li>$before<a href='$url' title='$title_text'>$text</a>$after</li>\n";
    else // custom
        $link_html = "\t$before<a href='$url' title='$title_text'>$text</a>$after\n";

    $link_html = apply_filters( "get_archives_link", $link_html );

    return $link_html;
}
1 голос
/ 20 июня 2018

Добавьте этот код в вашу тему functions.php файл, он обернет количество записей архива внутри тега span В приведенном ниже примере кода я обернул счет в тег span, вы можете добавить или изменить его в соответствии с вашими требованиями.

function wrap_archive_count($links) {
       $links = str_replace('</a>&nbsp;(', '<span class="archive-count">', $links);
       $links = str_replace(')', '</span></a>', $links);
       return $links;
}
add_filter('get_archives_link', 'wrap_archive_count');
...