How to use wp_query to display custom post type

Digging Deeper

The Power of a Good Argument

The ease with which we can create loops is obvious, but what about actually querying for posts? Let me show you a common technique I use when creating sliders for commercial themes.

In many cases, users of your theme will want a great-looking slider, but they might be a bit lazy in creating content. Many users will also want to show future content. Let’s query for upcoming (i.e. unpublished) posts that have an attached featured image.

Short, sweet and utterly understandable — just beautiful. And we’ve just scraped the surface.

Know Your Defaults

You may have noticed that I didn’t specify a number of things in my queries. What about how many posts to list? What about the post’s status in the first query we made?

Default values are supplied for many of the most common arguments. Here are a few that you don’t have to specify, unless you want to change them:

  • Defaults to the value specified in the reading settings for the number of posts to list.
  • Defaults to .
  • Defaults to .

You can find the complete list of parameters , of course!

Arrays Are Awesome

In many cases, you will want to specify a number of values that an argument can take. Where it would seem logical, usually allows you to use arrays to make your life easier. Here are a few examples:

  • You can use an array for to pull posts from a number of different statuses. Note that you can use the string to get posts from all statuses.
  • If you use custom post types, you’ll be happy to hear that you can use an array for the value of the parameter as well.
  • For the taxonomy type parameters , and so on, you can use an array to indicate a multitude of values.

Handling Taxonomies

is nice enough to offer a simple way to make advanced taxonomy queries as well. This is especially useful for websites with complex set-ups and for commercial themes with large feature sets. The mechanism used is called . Let’s look at an example.

Say you have a website all about movies. You store movies in a custom “movie” post type; you have a custom taxonomy for genre, a custom taxonomy for actors, and you use the regular ol’ category to indicate how good a movie is. Let’s find all “Action” movies starring “Bruce Willis” that aren’t “Bad”:

While this hardcoded example would be useful only to people who love Die Hard, it’s not hard to see how an advanced filter can be built that lets users filter through your content in any which way they want.

Learn more about all of the awesome things you can do with the .

Having Fun With Meta Data

You’ve already seen that is great at handling meta data — we used a in the second example to build a slider from posts that have featured images. Just as with the taxonomy queries, a lot of flexibility is built in here.

We’re currently building a WordPress theme to be used to create a Web page for apartment(s) for rent. We store apartments as a custom post type and use meta data to store the details. With a meta query, we can easily pull in all apartments that can house four or more people, that have a balcony and that are non-smoking.

Again, this is very modular, very understandable. To learn more about the parameters you can use, just visit the “” section in the documentation.

Функция WordPress get_posts

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

Преимущество использования get_post () над WP_Query () заключается в том, что основной цикл не изменяется, чего нельзя сказать о WP_Query (). Внутренне функция get_posts () также использует объект WP_Query () для получения сообщений на основе переданных аргументов. Однако он гарантирует сброс основного цикла, который вы можете забыть сделать, если используете WP_Query напрямую.

Вот небольшой пример использования функции get_posts ():

В этом случае мы получаем массив сообщений от вызова get_posts (). Если вы посмотрите ссылку на функцию в кодексе, есть еще много параметров, таких как posts_per_page, paged, tax_query и т.д.

Пользовательский тип сообщения WordPress get_posts

Вы также можете использовать функцию get_posts () для получения сообщений пользовательского типа post_type с пользовательским именем таксономии.

get_posts wpml

Плагин WordPress Multilingual добавляет поддержку нескольких языков на страницах WordPress. Он также предоставляет функции, которые работают с классами WordPress WP_Query и WP_Post и предоставляют способ извлекать сообщения на определенных языках и управлять ими.

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

Используйте suppress_filters: установите для параметра suppress_filters функции get_posts значение false. Это позволит функции get_posts () возвращать сообщения только на текущем языке.

Функция WordPress query_posts: Другой предпочтительный вариант – возвращать сообщения с помощью функции query_posts ().. Он принимает в качестве параметра массив аргументов WP_Query и возвращает список объектов сообщения. Функция query_posts () изменяет основной запрос, который WordPress использует для отображения сообщений. Он заменяет основной запрос новым запросом. Поэтому необходимо вызвать wp_reset_query () после query_posts (), чтобы восстановить исходный основной запрос // создать массив аргументов с языком, установленным как en_us

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

Есть и другие параметры, которые обычно используются с функциями query_posts (). Предел WordPress query_posts для возвращаемых сообщений можно установить с помощью параметра «posts_per_page». Если вы хотите вернуть сообщения с определенной страницы, вы также можете использовать параметр query_posts ‘paged’. Параметр смещения WordPress query_posts используется для указания количества сообщений, которые вы хотите пропустить перед тем, как начать список сообщений.

Изменение запросов с помощью фильтра pre_get_posts

Фильтр pre_get_posts применяется после формирования запроса но до его выполнения, т.е. его использование не создает дополнительной нагрузки!

Исключение рубрик на главной странице

Если нужно не показывать на главной / домашней странице записи блога из некоторых рубрик (например, с id= ‘1’ и ’67’), используйте в плагине или добавьте в файл functions.php код:

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-1,-67' );
    }
}
add_action( 'pre_get_posts', 'exclude_category' );

Изменение количества записей для разных случаев

В WordPress есть одна глобальная настройка для количества записей на главной странице блога и на страницах рубрик, архивов по месяцам и т.д. (Параметры — Чтение). Применяя фильтр, можно избирательно изменять эту и другие настройки, например, для главной страницы или страницы определенной рубрики.

Пример изменения параметра ‘posts_per_page’ (записей на странице):

function change_posts_per_page( $query ) {
    // изменять не в админке и только главный запрос
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_home() ) {
        // На главной показывать только 1 запись
        $query->set( 'posts_per_page', 1 );
        return;
    }

    if ( is_post_type_archive( 'movie' ) ) {
        // 50 записей в архиве произвольноготипа'movie'
        $query->set( 'posts_per_page', 50 );
        return;
    }
}
add_action( 'pre_get_posts', 'change_posts_per_page', 1 );

Дополнительно: в разделе «Функции WordPress» также:

  • URL и другая информация о блоге
  • Функции, подключающие шаблоны
  • wp_list_categories
  • Вход в систему
  • wp_list_pages — список ссылок на страницы
  • Функции даты и времени в WordPress
  • wp_link_pages — ссылки на страницы статьи с nextpage
  • Шорткод
  • Функции для работы с метками
  • Функции action, filter, plugin и локализация
  • Произвольные поля (custom fields)
  • Функции для работы с типами данных (записей)
  • Функция wp_insert_post — обновление/добавление записи заданного типа
  • Административные меню
  • Функции для работы с пользователями и ролями пользователей

Examples

below you will find an assortment of examples. Please note these examples use the object rather than the function, however the arguments and logic remain the same.

1. Single custom field value

In this example, we will find all posts that have a post_type of ‘event’ where the custom field ‘location’ is equal to ‘Melbourne’. The custom field ‘ location’ in this case could be a text field, radio button or select field (something that saves a single text value)

2. Multiple custom field values (text based values)

In this example, we will find all posts that have a post_type of ‘event’ where the custom field ‘location’ is equal to ‘Melbourne’ and the custom field ‘attendees’ is higher than 100. The custom field ‘ attendees’ in this case could be a number field, text field, radio button or select field (something that saves a single text value)

3. Multiple custom field values (array based values)

In this example, we will find all posts that have a post_type of ‘event’ where the custom field ‘location’ is equal to ‘Melbourne’ or ‘Sydney’. The custom field ‘ location’ in this case could be a multi-select or checkbox field (something that saves a serialized array value)

4. Sub custom field values

In this example, we will find all events that have a ‘city’ or either ‘Melbourne’ or ‘Sydney’. Each ‘city’ is added as a new row to a repeater field called ‘location’.

To successfully query sub field values, we need to remember that the row number is not known (there may be 1,2 or even 3 rows of repeater field data). Therefore, we need to use a LIKE clause in our SQL query to allow for a WILDCARD in the meta_key search. To do this, we create a custom filter to replace the standard ‘=’ with ‘LIKE’.

Update: Since the changed behaviour of esc_sql() in WordPress 4.8.3, it is not easy to use the % character as a placeholder for the following search and replace, instead, we recommend that you use the $ character as shown below.

Note: This method requires hooking into the posts_where filter, which is not guaranteed to run on all post queries. To overcome this, set suppress_filters to false in the argument array passed to get_posts() or WP_Query.

Dynamic $_GET parameters

This example shows how to use $_GET parameters (from the URL) to modify the query of a post type archive. This example assumes a post type exists for ‘event’ and that it’s archive exists at the url; .

The event post type contains a select field called ‘city’ with values such as ‘melbourne’ and ‘sydney’. By adding a parameter to the url, the query will be modified and only posts that match the ‘city’ will be shown; .

Последние мысли

Разработчики WordPress имеют доступ к обширному списку функций WordPress для настройки своих тем. Мы составили список наиболее часто используемых функций запросов WordPress. Однако понятно, что обучение использованию этих функций вначале может занять много времени. Разработчики склонны искать варианты, которые просты в использовании и предоставляют им аналогичные функциональные возможности и гибкость. TemplateToaster, конструктор тем WordPress и конструктор сайтов WordPressявляется одним из таких инструментов с расширенными функциями и функциями для создания тем WordPress, значительно упрощающих работу по разработке. Инструмент представляет собой комплексное программное обеспечение для веб-дизайна, которое обеспечивает поддержку всех плагинов WordPress и настраиваемых тем. С помощью этого инструмента вам не нужно будет углубляться в детали функций WordPress и вы сможете напрямую использовать темы из обширной коллекции, которую предлагает TemplateToaster.

Лучший интерфейс перетаскивания для создания потрясающих тем WordPress

Источник записи: https://blog.templatetoaster.com

Подробнее про Controllers

Легче понять что такое View и Model, и все что не влазит в View и Model — может быть размещено в Controller. По сути это все другие классы, которые обеспечивают логику работы приложения.

Хотя конечно типы и паттерны классов не ограничены лишь Моделями и Контроллерами. Существует множество других классов по иным паттернам. Например попробуйте угадать какому паттерну соответствует класс DateTime? Это не модель, не контроллер и тем более не view/template. Классы бывают разные и не всегда они должны называться контроллерами или быть моделями

В мире Laravel & Symfony мы можем сказать что контроллер совместно с роутерами обрабатывает HTTP запросы, обеспечивает взаимодействие с моделями, и обычно возвращает данные в представления (view/template).

В мире WP все слегка иначе…

Во первых вместо роутеров у нас Rewrites Rules (те самые которые появились во времена Apache & htaccess). Смею полагать что это сложнее чем роутер, но гибче. Молодому поколению привыкшему к простым роутерам — бывает сложно освоить Rewrite Rules По этой же причине многие не понимают природу образования ЧПУ. Также как и с моделями — программисты полагаются на магию фреймворка, перестают думать головой и мозг постепенно атрофируется.

Во вторых HTTP запрос в мире WP это лишь часть системы обмена сообщениями. Потому контроллеры в мире WP могут не работать напрямую с HTTP запросом. А получать данные и обрабатывать их далее посредством системы обмена сообщениями (тут ее зовут системой хуков, сегодня этот паттерн чаще известен как EDA или Event-driven architecture, 30 лет назад когда паттерн только зарождался его называли просто обменом сообщений между объектами или компонентами системы).

Потому в более широком смысле тут контроллером называется класс, который принимает и обрабатывает данные в потоке запроса. Не всегда напрямую от HTTP. Обычно он возвращает данные в представление (view/template) или в JSON API. А может быть и ничего не возвращает. Принял, сохранил и уснул Так тоже бывает.

Further Reading on SmashingMag:

  • Powerful WordPress Tips And Tricks
  • Building An Advanced WordPress Search With WP_Query
  • 10 Useful WordPress Loop Hacks
  • Do-It-Yourself Caching Methods With WordPress

Safety

Throughout our interactions with this object, we are supplying parameters and using functions to reach our goal. The object’s internals take care of many annoyances, such as protecting against SQL injection attacks and making sure that proper data types are used.

Simplicity

The object abstracts much of the query complexity away so that we don’t have to muck about with the specifics of our database. Because we are using an array to supply our criteria, everything is more self-explanatory. No manual database joins or nested queries are needed — just create an arguments array and instantiate the class!

Modularity

My favorite of all is modularity. When making raw queries, it is hard to manage those frequently used bits because they are just fragments of SQL code. does away with this by using an associative array as an argument. A plethora of goodness ensues: you can merge arguments from different places, run array functions to your heart’s content and manipulate it in ingenious ways.

Цикл на основе WP_Query()

Для вывода записей никак не связанных со страницей или создания множественных циклов можно использовать циклы на основе класса WP_query(). Выглядят они аналогично циклам с использование query_posts(). Для WP_query() используются те же самые параметры (см.в описании функцииquery_posts()).

Интересно, что WP_query() является ядром функций query_posts() и get_posts(), т.е. обе эти функции работают на основе этого класса.

Пример цикла: выведем все записи из категории 9:

<?php
$query = new WP_Query('cat=9&nopaging=1'); // указываем категорию 9 и выключаем разбиение на страницы (пагинацию)
while($query->have_posts()){ $query->the_post(); ?>

        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <?php the_content(); ?>

<?php } ?>

<?php wp_reset_postdata(); // сбрасываем переменную $post ?>

Пример создания множественных циклов на основе WP_query():

<?php
// Цикл 1
$query1 = new WP_Query('cat=-1&nopaging=1'); // все посты, кроме категории 1
while($query1->have_posts()){ $query1->the_post();

	// вывод записей

}
wp_reset_postdata();

// Цикл 2
$query2 = new WP_Query('cat=-2&nopaging=1'); // все посты, кроме категории 2
while($query2->have_posts()){ $query2->the_post();

	// вывод записей

}
wp_reset_postdata();

// Цикл 3
$query3 = new WP_Query('cat=-3&nopaging=1'); // все посты, кроме категории 3
while($query3->have_posts()){ $query3->the_post();

	// вывод записей

}
wp_reset_postdata();
?>

Особенность циклов на WP_query() в том, что мы создаем новый объект ($query), который никак не связан с аналогичным глобальным объектом $wp_query и поэтому мы никак не нарушаем структуру текущей страницы.

Так же, мы можем использовать новый объект в других целях, не только для вывода записей, но и для различного рода проверок: например, записи какого типа страницы  используются в этом новом объекте; можем узнать общее количество записей удовлетворяющих запросу ($query->found_posts) и т.д (правда, когда это может пригодится смутно представляю).

Зачем нужно использовать wp_reset_postdata()

В глобальной переменной $post хранятся данные текущего поста (если показывается страница поста, то данные этого поста). Когда срабатывает часть кода $query->the_post(), то в переменную $postзаписываются данные текущего поста в цикле и в конце цикла в этой переменной остаются данные последнего поста из этого цикла, а нужно чтобы $post всегда содержала данные текущего поста страницы. Т.е. получается до использования цикла $post->ID (ID текущего поста) было равно, допустим, 10, а после срабатывания цикла, та же самая переменная $post->ID уже равна, допустим, 56 (ID последнего поста из цикле), а нужно чтобы она по-прежнему равнялась 10.

wp_reset_postdata() используется как раз для того, чтобы вернуть правильные данные в переменную $post.

Когда использовать WP_query()?

Если нужно вывести записи не затрагивая основной цикл (допустим записи в боковой панели), если нужно создать множественные запросы. Вообще, я не вижу никаких преимуществ циклов на WP_query() над циклами с использованием get_posts() и поэтому рекомендую использовать get_posts() вместо WP_query().

Некоторые предупреждения

Класс велик. Я создал много сайтов, которые нужно настроить запрос, поэтому я часто использую его. Но это не является недостатком

Следует обратить внимание на следующие моменты:

  • Если вы хотите сделать просто изменить тип контента или конкретный способ отображения файла, пожалуйста, не используйте 。 Вместо этого, просто создать файл шаблона для архива или типа содержимого, а затем изменить цикл в файле шаблона.
  • Если вы хотите, чтобы отобразить количество сообщений, чем обычно, как правило, отображается на странице архива (например, не отображают определенную категорию), пожалуйста, не используйтеСоздайте новый запрос. Но использоватьИзменить тег первичного запроса и состояния, чтобы выбрать местоположение, которое вы хотите выполнить.
  • Будьте осторожны, чтобы бежать слишком много на странице. Теоретически, вы можете создать страницу с сотнями пользовательских запросов, но просто рассмотрите нагрузку на сервер. Если вам нужно четыре или более запроса на странице, вам может потребоваться рассмотреть возможность создания дополнительной страницы.

Выбор подходящей темы

Начало в WordPress с нуля — это и помощь в прохождении процесса регистрации в системе. Чтобы войти в свой личный кабинет админа сайта, необходимо на странице, которая откроется по адресу http://адрес сайта/wp-admin/, ввести свои логин и пароль.

Работа с Вордпресс для меня началась с выбора темы. Для начинающих неплохим вариантом будет перебрать несколько десятков разных вариантов и выбрать понравившийся. Потом некоторые новички столкнутся с проблемой их настройки и управления, но это потом.

WordPress содержит более ста разнообразных тем, с которых можно начать. Они сгруппированы в несколько рубрик, по тому, какая картинка стоит на главной их странице. Но так как работа с нуля предполагает смену всех шаблонных данных, можно выбирать любую из этих тем — все графические данные их будут в последствие изменены.

Плагины

Плагины расширяют стандартные возможности движка. Например, Вордпресс сам по себе не умеет показывать формы обратной связи, а с плагином Contact Form 7 — умеет. С галереями то же самое: Вордпресс не сможет вывести галерею красиво, а с плагином NextGEN Gallery — сможет.

Плагины есть на все случаи жизни — от SEO-оптимизации до кеширования и ускорения загрузки сайта. Если вам нужно добавить какую-то новую возможность на сайт, но Вордпресс этого не умеет, — поищите плагин. Скорее всего, для вашей задачи он уже есть, в том числе и бесплатный.

Как и темы, плагины бывают платными и бесплатными — это зависит только от разработчика. Причём не обязательно, что платные плагины будут работать лучше других, главное, чтобы они решали вашу задачу. Почти у любого платного плагина есть бесплатный аналог или тестовый период, в течение которого можно выяснить, подходит вам этот продукт или нет.

Разработчики плагинов хоть и заинтересованы писать код качественно, но далеко не всегда у них это получается. Многие плагины могут оказаться небезопасными или плохо оптимизированными, поэтому могут замедлять сайт или открывать его для хакеров. Есть ситуации, когда плагины конфликтуют друг с другом или вообще намертво вешают сайт. Читайте отзывы в магазине плагинов и тестируйте их на внутреннем сервере, прежде чем выкатывать на боевой.

Интерфейс Contact Form 7.

Плагин NextGEN Gallery в действии.

Что такое WP_Query?

— это класс WordPress. Поскольку это именно класс, то из этого следует что у него есть множество свойств, в которых будет храниться нужная нам информация.

Если хотите взглянуть на сам код WP_Query, то его можно найти, открыв файл .

Работа с будет осуществляться в четыре этапа:

  • передача аргументов запроса
  • выполнение запроса
  • прохождение по результату в цикле
  • завершение: сброс данных постов

На практике это будет выглядеть примерно так:

<?php

$args = array(
    // аргументы
);

// Собственный запрос
$query = new WP_Query( $args );

// Проверка на наличие результата
if ( $query->have_posts() ) {

    // Прохождение по результатам в цикле
    while ( $query->have_posts() ) {

        $query->the_post();

    }

}

// Восстановление оригинальных данных
wp_reset_postdata();

?>

Аргументы можно передать непосредственно при создании класса, но я предпочитаю разделять эти вещи.

Сброс данных постов

После каждого запроса необходимо вызывать функцию . Это позволит преобразовать наш запрос в стандартную конфигурацию для вывода контента страницы.

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

Если этого не сделать, то в результате выполнения последующих запросов может быть извлечено не корректное содержимое, что повлияет на условные выражения и многое другое.

Вопросы к изучению для новичков

Основные пункты, которые нужно знать для начала работы с WordPress:

  • как зайти в консоль админа;
  • выбрать тему интерфейса сайта;
  • создать страницы и записи;
  • установить подходящие виджеты;
  • подобрать и установить плагины для более простой работы.

Чтобы записи были более информативные и интересные для будущих пользователей сайта, добавляйте изображения и загружайте видео на его страницы. Чтобы это сделать, кликните на «добавить медиафайл» и в вкладке, которая откроется выберите:

  • вставить медиафайл (загрузить новую картинку с компьютера);
  • создать галерею, добавить миниатюру записи;
  • вставить с сайта (потребуется ссылка на источник).

Миниатюра записи — это то изображение, которое будет видно посетителям, просматривающим страницы сайта в поиске подходящей информации. Оно может быть не слишком большим, но обязательно должно отражать суть данной записи.

Вывод статического контента на архивной странице

Иногда есть необходимость вставить небольшой статический текст для поисковой оптимизации архивной страницы блога. Как это сделать, если записи здесь постоянно движутся сверху вниз или снизу-вверх? Я нашел такую возможность благодаря плагину page builder. Для этого снова вставьте строку на ширину экрана и в нее виджет «Текст». Здесь напишите свой текст, сохраните и только расположите строку с виджетом «Текст» сверху над строкой с виджетом «Цикл записей». Теперь после добавления новых записей, нужный вам текст будет расположен всегда сверху страницы над остальными записями.

Заключение

Я надеюсь, что данная статья помогла вам увидеть, как сделать вывод записей на странице wordpress и как сортировать их в нужном вам порядке. При этом вы почти не соприкасаетесь с кодом сайта, и делаете все через плагин с удобным и понятным интерфейсом. Оставляйте комментарии, поделитесь своим опытом и удачи всем!

Выбор шаблона для вывода записей wordpress

Итак, жмем на кнопку редактировать и первое что мы видим, открыв виджет, так это выпадающий список с возможность выбора файла шаблона темы для вывода записей wordpress через плагин.  У меня стоит тема Astra, в которой масса разных настроек и есть несколько файлов шаблона. Я выберу файл шаблона content-blog.php. В вашей теме возможно будут другие файлы, попробуйте активировать один за другим и протестируйте их. Если ни один из них вас не устроит, сделайте свой. Например, назвав его post_type.php и вставив в него такой код:

Это шаблон для вывода произвольных типов записей wordpress, под названием services и portfolio. Если будете использовать этот код то замените слаг записей на свой. Под выпадающим списком есть возможность активировать чекбокс More link с текстом под ним говорящим, что если ваш шаблон поддерживает функцию, обрезать запись, то у вас появится превью записи и ссылка «Читать далее». По умолчанию в превью поста включает 55 символов.

Выбор типа записей

Далее предлагается сделать выбор типа записей, которые бы мы хотели вывести на странице. Например, таких:

  • все типы сразу
  • страницы сайта
  • записи блога
  • кастомные типы записей (будут отображены если есть)
  • медиафайлы.

Я выберу «Записи блога».

Выбор таксономии

Далее важная и полезная настройка – выбор таксономии. Если вы хотите сделать вывод постов из текущей категории wordpress, то выберите рубрику или метку к которой были привязаны некоторые посты. Если вы привяжете 10 постов к рубрике wordpress get_posts, то на странице будут показаны только эти записи.

Сортировка постов wordpress по дате публикации

Виджет «Цикл WordPress» позволяет настроить вывод записей постов по какой-нибудь дате, например, показать все записи с 01. 01. 2019 по 01. 04. 2019 Так будут показаны посты только за первые четыре месяца этого года.

Например:• по id записи• по автору• названию• по метаполю• по количеству комментариев и др.

Направление вывода записей

Виджет «Цикл записей» позволяет настроить направление вывода. То есть последние посты вывести первыми или первые последними. Это пункт Order direction: Ascending или Descending.

Настройка количества вывода постов

В плагине есть опция, позволяющая сделать вывод определенного количества постов wordpress. Скажем вам нужно показать только 7 постов, впишите нужное вам количество в соответствующее поле под заголовком «Сообщений на странице».

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: