Показать дату публикации с помощью функции wp_get_archives()?

Вопрос или проблема

У меня есть сомнения относительно wp_get_archives() функции

На моем сайте я создал следующий шаблон страницы, который использует функцию wp_get_archives() для отображения списка постов:

<?php 

    /**
     * Название шаблона: Архив постов
     *
     * Пользовательский шаблон страницы для отображения всех постов.
     *
     * Часть "Название шаблона:" выше позволяет выбирать его
     * из выпадающего меню на экране редактирования страницы.
     *
     * @package WordPress
     * @subpackage Twenty_Ten
     * @since Twenty Ten 1.0
     */

    get_header(); 

?>

<!-- Содержимое (решетка) -->
<div class="container">
    <!-- Введение -->
    <section id="представление">
        <div class="row">
            <div class="col-sm-12">
                <!--<h1 class="text-center"><small>Ассоциация за Защиту Прав Человека Eritrean</small></h1>-->
                <h1 class="text-center title">Ассоциация за Защиту Прав Человека Eritrean</h1>
                <h1 class="text-center leadTitle">Ассоциация в Защите Прав Человека Eritrean</h1>
                <!--
                <p class="lead text-center">
                    Ассоциация в Защите Прав Человека Eritrean
                </p>
                -->
            </div><!-- /.col-sm-12 -->
        </div><!-- /.row -->
    </section><!-- /раздел представления -->
    <!-- Избранные проекты -->

    <header class="header-sezione">
        <h2>Архив постов</h2>
    </header>

    <ul>
        <?php wp_get_archives('type=postbypost'); ?>
    </ul>

    </section>

</div>

<?php get_footer(); ?>

Это работает, и это результат (мне нужно только настроить правильный CSS для размера шрифта)

Хорошо, теперь мой вопрос: используя функцию wp_get_archives(), могу ли я отображать дату поста перед каждым постом?

Я хочу получить что-то вроде:

10/04/2014 – НАЗВАНИЕ ПОСТА

вместо простого названия поста.

Могу ли я сделать это, передав некоторые параметры функции wp_get_archives()? Или единственное решение – не использовать эту функцию и создать собственный цикл в своем шаблоне?

wp_get_archives() не может отображать дату поста, но вы можете заставить wp_get_archives отображать дату, используя хуки.

Поместите следующую функцию в конец вашего пользовательского файла шаблона или файла functions.php –

function wpse_the_title($title, $id){
    if( $date = get_the_date('d/m/Y', $id) ){
        $title = sprintf('%s - %s', $date, $title);
    }
    return $title;
}

Замените на соответствующий код –

<?php add_filter('the_title', 'wpse_the_title', 10, 2); ?>
<ul>
    <?php wp_get_archives('type=postbypost'); ?>
</ul>
<?php remove_filter('the_title', 'wpse_the_title', 10, 2); ?>

Функция wp_get_archives в WordPress не поддерживает отображение дат. Тем не менее, мое решение сработало без использования этой функции, и это все равно, вероятно, удобно для вас или кого-то другого:

В файл functions.php вашей темы поместите следующее:

 function recentPostsDate() {
    $rPosts = new WP_Query();
    $rPosts->query('showposts=6');
    while ($rPosts->have_posts()) : $rPosts->the_post(); ?>
        <ul>
            <li>
                <a href="https://wordpress.stackexchange.com/questions/157561/<?php the_permalink(); ?>" title="<?php the_title(); ?>">
                    <?php the_date('d/m/Y', '<span class="date">', '</span>'); the_title(); ?>
                </a>
            </li>
        </ul>
    <?php endwhile;
    wp_reset_query();
}

После этого вы можете использовать это в своем основном шаблоне, просто вызвав функцию:

<?php recentPostsDate(); ?>

В зависимости от настроек, которые я выбрал, вывод будет выглядеть примерно так:

01/04/2015 Заголовок первой новости
23/03/2015 Заголовок второй новости
14/03/2015 Заголовок третьей новости

Ответ или решение

Функция wp_get_archives() в WordPress предназначена для вывода архивов публикаций, включая их заголовки и количество комментариев. Однако она не предоставляет возможности напрямую отображать дату публикации перед заголовками постов. Если вы хотите внедрить даты в архивы постов, вам необходимо использовать подход с хуками или создать собственный цикл, который обеспечит вам необходимую функциональность.

Решение через хук

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

Код:

function wpse_the_title($title, $id) {
    if ($date = get_the_date('d/m/Y', $id)) {
        $title = sprintf('%s - %s', $date, $title);
    }
    return $title;
}

add_filter('the_title', 'wpse_the_title', 10, 2);
?>

<ul>
    <?php wp_get_archives('type=postbypost'); ?>
</ul>

<?php remove_filter('the_title', 'wpse_the_title', 10, 2); ?>

Пошаговое объяснение:

  1. Создание функции: Функция wpse_the_title принимает два параметра: $title и $id. Она вызывает функцию get_the_date(), чтобы получить дату публикации в формате дд/мм/гггг, а затем обновляет заголовок, добавляя дату перед ним.

  2. Применение фильтра: add_filter() добавляет функцию wpse_the_title к фильтру the_title. Это значит, что каждый раз, когда WordPress выводит заголовки постов, ваша функция будет применяться.

  3. Вывод архивов: wp_get_archives('type=postbypost'); выводит архивы постов.

  4. Удаление фильтра: После отображения архивов необходимо удалить фильтр с помощью remove_filter(), чтобы избежать изменения заголовков в других местах вашего шаблона.

Альтернативный метод: Пользовательский цикл

Если вам нужно больше контроля над выводом, вы можете создать свой собственный цикл с использованием WP_Query. Это даст вам гибкость в настройке формата вывода. Вот пример кода:

function recent_posts_with_dates() {
    $args = array('posts_per_page' => 6);
    $recent_posts = new WP_Query($args);

    if ($recent_posts->have_posts()) {
        echo '<ul>';
        while ($recent_posts->have_posts()) {
            $recent_posts->the_post();
            echo '<li>';
            echo '<a href="' . get_permalink() . '" title="' . get_the_title() . '">';
            echo get_the_date('d/m/Y') . ' - ' . get_the_title();
            echo '</a>';
            echo '</li>';
        }
        echo '</ul>';
    }
    wp_reset_postdata();
}

Как использовать:

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

<?php recent_posts_with_dates(); ?>

Заключение

Оба предложенных метода позволят вам выводить даты перед заголовками постов на вашем сайте WordPress. Выбор между хуком и пользовательским циклом зависит от ваших предпочтений и требований к дизайну. Первый метод проще в реализации, тогда как второй позволяет больше настроек.

Оцените материал
Добавить комментарий

Капча загружается...