Создание раздела «Лучшие публикации» в WordPress

WordPress – чрезвычайно мощная CMS. Её мощь заключается, прежде всего, в широких функциях параметра. Настроить дизайн веб-сайта или добавить новую возможность – дело нескольких минут.

WordPress может изменить особю область веб-сайта – область виджетов – для выведения категорий, разделов или хронологии записей. Но как быть, если вы хотели бы отобразить в виде виджета произвольный пост?

На многих веб-сайтах такая функцию доступна под названием «Лучшие записи»(«Featured Posts»). В базовой поставке WordPress данной возможности нет, но она без проблем может быть создана.

Эта статья посвящена созданию возможности «Лучшие записи» с помощью средств, имеющихся в стандартной инсталляции WordPress.

По ходу дела мы сосредоточимся на реализации самой возможности, так что не сможем уделить слишком много внимания дизайну. Позже вы сможете отредактировать CSS -файлы так, чтобы секция «Лучшие записи» наилучшим образом вписалась в дизайн веб-сайта.

Исходные требования

  • инсталляция WordPress;
  • начальные знания PHP;
  • умение ориентироваться в документации;
  • свободного времени.

Предполагаемый результат

Создание раздела «Лучшие публикации» в WordPress Загрузить все файлы, используемые в статье, вы можете здесь.

Приступим

Чтобы не заморачиваться дизайном, мы будем использовать тему-пустышку Test-theme, состоящую из базового набора шаблонов, показывающих нужный содержимое без намёка на оформление. Вы можете без проблем загрузить эту тему отсюда либо использовать любую другую тему.

Этапы работы

  • добавление метабокса на страницу редактирования публикации;
  • сохранение данных метабокса;
  • вывод «лучших записей» на главной странице.

Этап 1. Создание метабокса

Откройте файл functions.php и добавьте в него возможность, регистрирующую метабокс. Эта функцию отобразит флажок опции на странице редактора публикации:

function add_featured_meta_box($post){$featured = get_post_meta($post->ID, '_featured-post', true);echo "<label for='_featured-post'>".__('Feature this post?', 'foobar')."</label>";echo "<input type='checkbox' name='featured-post' id='featured-post' value='1' ".checked(1, $featured)." />";}

Когда администратор захочет поместить ссылку на пост в секцию «Лучшие записи», он просто установит этот флажок:

Создание раздела «Лучшие публикации» в WordPress Но если мы попробуем воспользоваться данной функцией теперь, то заметим, что состояние флажка не сохраняется.

Этап 2. Сохранение данных метабокса

Снова откроем файл functions.php и создадим следующую возможность:

function save_featured_meta($post_id){// Do validation here for post_type, nonces, autosave, etc...if(isset($_REQUEST['featured-post']))update_post_meta(esc_attr($post_id), '_featured-post', esc_attr($_REQUEST['featured-post']));// I like using _ before my custom fields, so they are only editable within my form rather than the normal custom fields UI}add_action('save_post', 'save_featured_meta');

Эта функцию проверяет, был ли установлен флажок, и соответственно обновляет информацию в базе данных с помощью возможности update_post_meta(). Эта функцию отвечает за сохранение информации в пользовательских полях ввода базы данных WordPress.

Пользовательские поля ввода добавляются в базу данных по мере необходимости. Так что наша функцию первым делом проверяет, существует ли соответствующее пользовательское поле ввода. Если нет, поле ввода добавляется с помощью вызова возможности add_post_meta().

Этап 3. Вывод секции «Лучшие записи»

Чтобы отобразить данные на главной странице, мы должны модифицировать файлы нашей темы. Скопируйте разметку и код, приведённые ниже, и вставьте их туда, где вы планируете отобразить секцию «Лучшие записи»:

<h2>Featured Posts</h2><?php $args = array( 'posts_per_page' => 5, 'meta_key' => '_featured-post', 'meta_value' => 1); $featured = new WP_Query($args);if($featured->have_posts()): while($featured->have_posts()): $featured->the_post();?><h3><a href="<?php the_permalink();?>"> <?php the_title();?></a></h3><p class="details">By <a href="<?php the_author_posts()?>"><?php the_author();?> </a> / On <?php echo get_the_date('F j, Y');?> / In <?php the_category(', ');?></p><?php if(has_post_thumbnail()):?><figure> <a href="<?php the_permalink();?>"><?php the_post_thumbnail('', array('class' => 'box'));?></a> </figure><p ><?php the_excerpt();?></p><?phpendif;endwhile; else:endif;?>

Этот программный код создаёт массив, который будет содержать в себе список «лучших» записей. Далее этот массив заполняется из базы данных с помощью возможности WP_Query(). В конце концов, ссылки на записи, их заголовки, автор и иные подробности выводятся в цикле в нужном месте страницы.

Если сейчас вы откроете главную страницу веб-сайта, то результат будет выглядеть примерно так:

Создание раздела «Лучшие публикации» в WordPress

Заключение

Поздравляю! Вы только что создали полезное дополнение для веб-сайта и изучили некоторые способы параметра WordPress на реальном примере. Разумеется, если вы не удовлетворены результатом или считаете все данные манипуляции слишком сложными, вы можете без проблем воспользоваться готовым плагином вроде TSP Featured Posts или Featured Posts Widget.

Надеюсь, эта статья была для вас полезной. Вы можете без труда поделиться вашими рецептами создания раздела «Лучшие записи» в комментариях.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *