С момента внедрения постов разных форматов часто возникают вопросы, а как их выводить? Одной из востребованных функций является возможность создания ссылок на архивы постов разны форматов. Давайте создадим виджет, который поможет решить эту задачу.
Обычным перечнем форматов постов в WordPress являются:
- Aside — Заметка
- Image — Изображение
- Link — Ссылка
- Quote — Цитата
- Status — Статус
Эти форматы постов являются дополнительными к стандартному. Их перечень зависит от конкретной темы, разные форматы постов можно подключать и отключать. Подробнее о форматах постов: Форматы постов и вывод на главной странице постов определенного формата.
Для того, чтобы создать виджет, с помощью которого можно выводить список ссылок на архивы постов разных форматов, добавьте в файл functions.php следующий код:
// Post Format Archives Widget add_action('widgets_init', create_function('', 'register_widget("Post_Format_Archives_Widget");')); class Post_Format_Archives_Widget extends WP_Widget { function __construct() { parent::WP_Widget('post_format_archives_widget', 'Post Format Archives', array('description'=>'Список ссылок на архивы постов разных форматов')); } function widget($args, $instance) { extract($args, EXTR_SKIP); $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']); $aside = empty($instance['aside']) ? ' ' : apply_filters('widget_aside', $instance['aside']); $image = empty($instance['image']) ? ' ' : apply_filters('widget_image', $instance['image']); $link = empty($instance['link']) ? ' ' : apply_filters('widget_link', $instance['link']); $quote = empty($instance['quote']) ? ' ' : apply_filters('widget_quote', $instance['quote']); $status = empty($instance['status']) ? ' ' : apply_filters('widget_status', $instance['status']); echo $before_widget; if (!empty($title)) { echo $before_title . $title . $after_title; }; echo '<ul id="custom-post-format-widget">'; echo ' <li>' . $aside . '</li>'; echo ' <li>' . $image . '</li>'; echo ' <li>' . $link . '</li>'; echo ' <li>' . $quote . '</li>'; echo ' <li>' . $status . '</li>'; echo '</ul>'; echo $after_widget; } function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['aside'] = strip_tags($new_instance['aside']); $instance['image'] = strip_tags($new_instance['image']); $instance['link'] = strip_tags($new_instance['link']); $instance['quote'] = strip_tags($new_instance['quote']); $instance['status'] = strip_tags($new_instance['status']); return $instance; } function form($instance) { $defaults = array( 'title' => __('Форматы постов'), 'aside' => __('Заметки'), 'image' => __('Изображения'), 'link' => __('Ссылки'), 'quote' => __('Цитаты'), 'status' => __('Статусы'), ); $instance = wp_parse_args((array) $instance, $defaults); $title = strip_tags($instance['title']); $aside = strip_tags($instance['aside']); $image = strip_tags($instance['image']); $link = strip_tags($instance['link']); $quote = strip_tags($instance['quote']); $status = strip_tags($instance['status']); ?> <p><label for="get_field_id('title'); ?>">Название списка</label> <input class="widefat" id="get_field_id('title'); ?>" name="get_field_name('title'); ?>" type="text" value="" /> </p> <p><label for="get_field_id('aside'); ?>"></label> <input class="widefat" id="get_field_id('aside'); ?>" name="get_field_name('aside'); ?>" type="text" value="" /> </p> <p><label for="get_field_id('image'); ?>"></label> <input class="widefat" id="get_field_id('image'); ?>" name="get_field_name('image'); ?>" type="text" value="" /> </p> <p><label for="get_field_id('link'); ?>"></label> <input class="widefat" id="get_field_id('link'); ?>" name="get_field_name('link'); ?>" type="text" value="" /> </p> <p><label for="get_field_id('quote'); ?>"></label> <input class="widefat" id="get_field_id('quote'); ?>" name="get_field_name('quote'); ?>" type="text" value="" /> </p> <p><label for="get_field_id('status'); ?>"></label> <input class="widefat" id="get_field_id('status'); ?>" name="get_field_name('status'); ?>" type="text" value="" /> </p> <?php } }
Этот код создаст виджет, с помощью которого вы сможете вывести список ссылок на архивы блога с постами разных форматов. Виджет имеет настройки: вы можете указать, какие ссылки хотите видеть, обозначив их названия, а так же можете задать заголовок списку этих ссылок. Если какие-то поле не заполнено, то и соответствующая ссылка выводиться не будет.
