Intereting Posts
Интеграция пользовательских типов сообщений в календарь Перемещенный сайт WordPress на новый сервер, права на каталоги не работают правильно WP 4.4. отзывчивый браузер изображений, выбрав «неправильный» Остановить ошибку «загрузить размер файла» из печати Настроить аватару с помощью пользователя meta все изображения прошлой почты, испорченной после изменения темы Записывать скрипты в определенный заголовок – <имя> .php? Ошибка «Шаблон отсутствует» при не-дочерней теме Можно ли ссылаться на черновики страниц? Как установить cookie из PHP и получить его без обновления wp_enqueue_script не загружает мой пользовательский файл js Отправлять электронную почту администратору, когда пользовательский тип сообщения создается Как добавить подкатегории в блогролл? как добавить текст в сообщения из тегов Как хранятся данные в базе данных?

Архивный список с годами и месяцами

Я пытаюсь показать список архивов, как это

<ul> <li>Year</li> <li>Month</li> <li>Month</li> <li>Month</li> <li>Year</li> <li>Month</li> </ul> 

и т. д., с относительной ссылкой только на месяц. Я пробовал различные решения как плагин CG Archive ( http://wordpress.pastebin.ca/209160 ), и это единственный вид плагина, который я могу использовать, так как мне нужно разместить php-выход везде, где захочу, и другие плагины / виджеты I нашел, не позволяет мне это делать. Проблема в том, что она ничего не показывает! Знаете ли вы какие-либо альтернативные решения для этого? Очень благодарен заранее и извините за мой бедный английский.

Solutions Collecting From Web of "Архивный список с годами и месяцами"

Поместите это в свой файл functions.php или создайте простой плагин …

 /** * Display archive links based on year/month and format. * * The date archives will logically display dates with links to the archive post * page. * * The 'limit' argument will only display a limited amount of links, specified * by the 'limit' integer value. By default, there is no limit. The * 'show_post_count' argument will show how many posts are within the archive. * By default, the 'show_post_count' argument is set to false. * * For the 'format', 'before', and 'after' arguments, see {@link * get_archives_link()}. The values of these arguments have to do with that * function. * * @param string|array $args Optional. Override defaults. */ 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; } // over-ride general date format ? 0 = no: use the date format set in Options, 1 = yes: over-ride $archive_date_format_over_ride = 0; // options for daily archive (only if you over-ride the general date format) $archive_day_date_format = 'Y/m/d'; // options for weekly archive (only if you over-ride the general date format) $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'); } //filters $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); /* translators: 1: month name, 2: 4-digit year */ $text = sprintf(__('%s'), $wp_locale->get_month($arcresult->month)); $year_text = sprintf('%d', $arcresult->year); 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; } 

«только текст года»:

 /** * Display archive links based on year/month and format. * * The date archives will logically display dates with links to the archive post * page. * * The 'limit' argument will only display a limited amount of links, specified * by the 'limit' integer value. By default, there is no limit. The * 'show_post_count' argument will show how many posts are within the archive. * By default, the 'show_post_count' argument is set to false. * * For the 'format', 'before', and 'after' arguments, see {@link * get_archives_link()}. The values of these arguments have to do with that * function. * * @param string|array $args Optional. Override defaults. */ 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; } // over-ride general date format ? 0 = no: use the date format set in Options, 1 = yes: over-ride $archive_date_format_over_ride = 0; // options for daily archive (only if you over-ride the general date format) $archive_day_date_format = 'Y/m/d'; // options for weekly archive (only if you over-ride the general date format) $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'); } //filters $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 ); /* translators: 1: month name, 2: 4-digit year */ $text = sprintf(__('%s'), $wp_locale->get_month($arcresult->month)); $year_text = sprintf('<li>%d</li>', $arcresult->year); if ( $show_post_count ) $after = '&nbsp;('.$arcresult->posts.')' . $afterafter; $output .= ( $arcresult->year != $temp_year ) ? $year_text : ''; $output .= get_archives_link($url, $text, $format, $before, $after); $temp_year = $arcresult->year; } } $output .= '</ul>'; if ( $echo ) echo $output; else return $output; } 

Теперь вы можете использовать функцию wp_custom_archive где бы вы ни находились:

 <?php wp_custom_archive(); ?>