Выделите ссылку архива на single.php

есть какой-то шанс выделить ссылку архива в классическом викторе архива wp на шаблоне single.php?

У меня есть тот же шаблон для archive.php и single.php, где я звоню

<?php wp_custom_archive(); ?> 

Это настраиваемый wp-архив с подсветкой текущих ссылок (помещается в functions.php):

 function wp_custom_archive($args = '') { global $wpdb, $wp_locale; $defaults = array( 'limit' => '', 'format' => 'html', 'before' => '', 'after' => '', 'show_post_count' => false, 'echo' => 1 ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); if ( '' != $limit ) { $limit = absint($limit); $limit = ' LIMIT '.$limit; } $archive_date_format_over_ride = 0; $archive_day_date_format = 'Y/m/d'; $archive_week_start_date_format = 'Y/m/d'; $archive_week_end_date_format = 'Y/m/d'; if ( !$archive_date_format_over_ride ) { $archive_day_date_format = get_option('date_format'); $archive_week_start_date_format = get_option('date_format'); $archive_week_end_date_format = get_option('date_format'); } $where = apply_filters('customarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r ); $join = apply_filters('customarchives_join', "", $r); $output = '<ul>'; $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit"; $key = md5($query); $cache = wp_cache_get( 'wp_custom_archive' , 'general'); if ( !isset( $cache[ $key ] ) ) { $arcresults = $wpdb->get_results($query); $cache[ $key ] = $arcresults; wp_cache_set( 'wp_custom_archive', $cache, 'general' ); } else { $arcresults = $cache[ $key ]; } if ( $arcresults ) { $afterafter = $after; foreach ( (array) $arcresults as $arcresult ) { $url = get_month_link( $arcresult->year, $arcresult->month ); $year_url = get_year_link($arcresult->year); $text = sprintf(__('%s'), $wp_locale->get_month($arcresult->month)); $year_text = '<span class="year">'.sprintf('%d', $arcresult->year).'</span>'; if ( $show_post_count ) $after = '&nbsp;('.$arcresult->posts.')' . $afterafter; $year_output = get_archives_link($year_url, $year_text, $format, $before, $after); $output .= ( $arcresult->year != $temp_year ) ? $year_output : ''; $output .= get_archives_link($url, $text, $format, $before, $after); $temp_year = $arcresult->year; } } $output .= '</ul>'; if ( $echo ) echo $output; else return $output; 

Он работает, но не для шаблона single.php. На single.php ничего не выделяется. У кого-то есть идея, что я пропустил?

Поскольку ваши ссылки генерируются get_archives_link() , это место, где вы должны смотреть. Если вы get_archives_link() источник , вы заметите, что get_archives_link() – сам по себе не дает вам возможности добавить класс CSS, чтобы сделать выделение.

Конечно, есть крючок фильтра get_archives_link – или см. Источник – который можно было бы использовать для этого. Но, как вы можете видеть, единственной доступной информацией является полный вывод html link – $link_html – который в значительной степени заставляет вас делать некоторый RegEx для извлечения URL-адреса, а затем проверять его и если он подходит для добавления класса к выходу. Это способ сделать это, и вы найдете информацию здесь или там, как это сделать.

Но, если мы честны, это не здорово, потому что кто на самом деле хочет делать RegEx все время – это просто не очень желательно. Таким образом, лично это создало бы my_own_archives_link() , там вы можете реализовать возможность добавлять классы для выделения в соответствии с вашими потребностями.