Знакомство с wp_comment_query

Основные и вторичные запросы

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

Вторичный запрос это тот, который выполняется дополнительно к основному. Например:

Вторичные запросы выполняются с помощью класса , или с помощью одной из вспомогательных функций , и т.д. Если вы не знакомы с , советуем прочитать .

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

Для сравнения рассмотрим цикл для вывода популярных записей с помощью :

// Вторичный цикл
$popular = new WP_Query( ... );
while ( $popular->have_posts() ) {
    $popular->the_post();

    the_title(); // вывести название
    the_content(); // вывести содержимое
}
wp_reset_postdata();

Этот же цикл с помощью :

// Вторичный цикл
query_posts( ... );
while ( have_posts() ) {
    the_post();

    the_title(); // вывести название
    the_content(); // вывести содержимое
}
wp_reset_query();

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

Именно поэтому разработчики часто думают, что изменяет основной запрос WordPress, но это не так. Функция заменяет основной цикл новым вторичным циклом, и происходит это после выполнения основного запроса.

Часть 2. Работа с произвольными полями без помощи meta_query

Тут особо и не о чем рассказывать, если параметр WP_Query (название параметра) и есть (значение параметра, для числовых значений — ) . А ещё есть параметр сопоставления .

Теперь рассмотрим пример. Допустим, некоторые из постов мы должны отобразить на главной странице. Давайте выведем эти посты:

$true_args = array(
    'meta_key' => 'homepage_show_it',
    'meta_value' => 'on'
);
 
$true_query = new WP_Query( $true_args );

А теперь получим все остальны посты, т.е. у которых параметр homepage_show_it не равен on.

$true_args = array(
    'meta_key' => 'homepage_show_it',
    'meta_value' => 'on',
    'meta_compare' => '!='
);
 
$true_query = new WP_Query( $true_args );

Несколько циклов на одной странице

Для того чтобы в случае необходимости выполнить цикл еще раз, нужно «отмотать все назад» с помощью функции

<?php rewind_posts(); ?>

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

Если нужно сохранить (не перезаписывать) результаты исходного запроса, можно создать копию $wp_query или создать новый объект запроса.

Использование функции query_posts()

// 10 последних записей из категории cat1
<?php query_posts('category_name=cat1&posts_per_page=10'); ?>
<?php while (have_posts()) : the_post(); ?>
...
<?php endwhile;?>

Внимание! Чтобы не нарушалась «пагинация» — работа ссылок «Предыдущие записи» — для функции query_posts() необходимо использовать параметр paged:

  $page_num = $paged;
  if ($pagenum='') $pagenum =1;
  query_posts('showposts=4&paged='.$page_num=3');

Рекомендации автора плагина PageNavi (wp_pagenavi ):

Плагин wp_pagenavi создает страничную навигацию (страница 1, страница 2 и т.д.) для страниц записей, но навигация не будет работать, если в теме используется вызов функции query_posts() вида

query_posts('cat=8');
или
query_posts( array( 'cat' => 8 ) );

Должно быть так:

query_posts( array( 'cat' => 8, 'paged' => get_query_var('paged') ) );

если это не сработает, попробуйте передать переменную page:

query_posts( array( 'cat' => 8, 'paged' => get_query_var('page') ) );

(http://scribu.net/wordpress/wp-pagenavi/right-way-to-use-query_posts.html)

Внимание! Использование функции query_posts() означает изменение глобального массива и не рекомендуется. Предпочтительнее создание нового объекта  WP_Query или применение фильтра  

Создание нового объекта  WP_Query

Если нужно сохранить (не перезаписывать) результаты исходного запроса, можно создать копию $wp_query или создать новый объект запроса. Вот, например, два цикла: сначала вывод одной записи из рубрики featured и затем вывод последних добавленных записей, исключая первую выведенную запись

<?php $my_query = new WP_Query('category_name=featured&posts_per_page=1');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; ?>
...
<?php endwhile; ?>
...
<?php if (have_posts()) : while (have_posts()) : the_post();
if( $post->ID == $do_not_duplicate ) continue;?>
...
<?php endwhile; endif; ?>

Или вывод нескольких записей в первом цикле:

<?php $my_query = new WP_Query('category_name=featured&posts_per_page=3');
while ($my_query->have_posts()) : $my_query->the_post();
 $do_not_duplicate[] = $post->ID ?>    // массив id записей
...
<?php endwhile; ?>
...
<?php if (have_posts()) : while (have_posts()) : the_post();
 if (in_array($post->ID, $do_not_duplicate)) continue;
 ?>
...
<?php endwhile; endif; ?>

Можно пойти и другим путем — сразу исключить из запроса записи из массива:

<?php query_posts(array('post__not_in'=>$do_not_duplicate));
 if (have_posts()) : while (have_posts()) : the_post();
 ?>

Introduction to the WordPress get_posts Function

The Codex describes the function as follows:

We can use this way:

The function above retrieves the latest 20 blog posts in the specified category (by default the is ) and returns an array of objects. You can iterate over the array to display the posts on the screen. It’s pretty easy, right?

uses to retrieve post items, and it keeps an array of the same parameters available in (with few exceptions). So we have a huge list of variables we can use to build our custom queries. These parameters are grouped in the following :

  • Author Parameters
  • Category Parameters
  • Tag Parameters
  • Taxonomy Parameters
  • Search Parameters
  • Post & Page Parameters
  • Password Parameters
  • Post Type Parameters
  • Order & Orderby Parameters
  • Date Parameters
  • Custom Field (post meta) Parameters
  • Permission Parameters
  • Mime Type Parameters
  • Caching Parameters
  • Return Fields Parameter

A quick look at the list above can give you an idea of the variety of the custom queries you can build and run against the WordPress database. So, let’s dive deeper into query parameters and start to build our lists of posts.

Цикл с WP_Query()

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

<?php $custom_query = new WP_Query('cat=-9'); /* исключаем категорию с айди 9 */
while($custom_query->have_posts()) : $custom_query->the_post(); ?>

	<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
		<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
		<?php the_content(); ?>
	</div>

<?php endwhile; ?>
<?php wp_reset_postdata(); // reset the query ?>

Для задания цикла с помощью функции нам не нужна переменная query_string и для задания парметров цикла мы можем использовать теже параметры что и для query_posts(). Для того чтобы задать несколько циклов можете воспользоваться следующим шаблоном:

<?php // Цикл 1
	$one_query = new WP_Query('cat=-1'); // исключаем категорию
	while($first_query->have_posts()) : $one_query->the_post();
		...
	endwhile;
	wp_reset_postdata();

	// Цикл 2
	$two_query = new WP_Query('cat=-2'); // исключаем категорию
	while($second_query->have_posts()) : $two_query->the_post();
		...
	endwhile;
	wp_reset_postdata();

	// Цикл 3
	$three_query = new WP_Query('cat=-3'); // исключаем категорию
	while($third_query->have_posts()) : $three_query->the_post();
		...
	endwhile;
	wp_reset_postdata();
?>

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

Использование WP_Query в темах и плагинах

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

Рассмотрим простую ситуацию:

// Основной цикл
while ( have_posts() ) :
    the_post();
    the_title(); // вывести заголовок

    // Вторичный цикл, например схожие статьи
    $related = new WP_Query( ... );
    while ( $related->have_posts() ) :
        $related->the_post();
        the_title(); // заголовок схожей статьи
    endwhile;
endwhile;

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

Именно поэтому, если слегка изменить наш код:

// Основной цикл
while ( have_posts() ) :
    the_post();
    the_title(); // вывести заголовок

    // Вторичный цикл, например схожие статьи
    $related = new WP_Query( ... );
    while ( $related->have_posts() ) :
        $related->the_post();
        the_title(); // заголовок схожей статьи
    endwhile;

    // Снова заголовок. в чём ошибка?
    the_title();
endwhile;

Мы получаем, на первый взгляд, совершенно непредсказуемый результат. Третий вызов функции выведет заголовок последней записи из вторичного цикла, несмотря на то, что вызов функции находится за пределами этого цикла.

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

Функция wp_reset_postdata()

Функция устанавливает глобальную переменную в её исходное значение: текущая запись основного цикла. Использовать данную функцию следует сразу же после завершения нашего вторичного цикла:

// Основной цикл
while ( have_posts() ) :
    the_post();
    the_title(); // вывести заголовок

    // Вторичный цикл, например схожие статьи
    $related = new WP_Query( ... );
    while ( $related->have_posts() ) :
        $related->the_post();
        the_title(); // заголовок схожей статьи
    endwhile;

    // Вернуть $post в исходное значение
    wp_reset_postdata();

    // Всё ок!
    the_title();
endwhile;

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

Пример простого плагина

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

<?php
/**
 * Plugin Name: Append Latest Posts to Content
 */
function my_append_latest_posts( $content ) {
    $query = new WP_Query( array(
        'posts_per_page' => 5,
        'post__not_in' => array( get_the_ID() ),
    ) );

    if ( ! $query->have_posts() )
        return $content;

    $content .= '<h3>Свежие записи</h3>';
    $content .= '<ul>';

    while ( $query->have_posts() ) :
        $query->the_post();
        $content .= sprintf( '<li><a href="%s">%s</a></li>',
            esc_url( get_permalink() ),
            get_the_title()
        );
    endwhile;

    $content .= '</ul>';

    // Не забываем
    wp_reset_postdata();

    return $content;
}
add_action( 'the_content', 'my_append_latest_posts' );

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

Обратите внимание на параметр , с помощью которого мы исключаем текущую запись из нашего списка

Последние записи

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

После того, как вы освоили основы работы с классом , мы советуем ознакомиться с его остальными методами и переменными, например , , , и другие. Если вам интересно узнать, как именно работает , загляните в файл wp-includes/query.php.

Если у вас возникли вопросы при работе с , оставьте комментарий и мы обязательно вам ответим.

Conclusion

While comments play an essential role in growing your site, there are times when you need to purge them from the site. The types of comments you’d want to remove are the ones that can harm the site’s SEO and user experience.

Here are three alternative ways to delete comments in bulk on WordPress:

  • Using the WordPress admin dashboard — the easiest way to do the job, but has limited options for filtering the comments.
  • Using WP Bulk Delete plugin — offers more flexibility in filtering the comments, but advanced filtering requires the Pro version of the plugin.
  • Using SQL queries in phpMyAdmin — provides total control over the deletion process, but requires technical knowledge.

As each method has its pros and cons, it’s best to consider your needs first before making the decision. You can also do a test run on a couple of WordPress comments first to see which method best suits your preferences.

Настройка админ-панели в WordPress, убираем лишнее.

И так, первые шаги в WordPress начинаются с перехода в свою «девственную», нетронутую Админ-панель, вы увидите много лишнего, которое будет вам мешать в дальнейшей работе с блогом. (После прочтения этой статьи рекомендую прочесть о настройке WordPress.)  То, что нужно убрать это:

  • Приветствие, которое, если не убрать, вылазит время от времени автоматически.
  • Быстрая публикация. Совершенно для меня не нужна, я предпочитаю писать статьи  через программы, либо через раздел записи, так что быстро не получается Если для вас данная функция будет необходима, то оставьте.
  • Свежие черновики, конечно нужная вещь, но я помню какие из черновиков лежат без дела на сайте, по этому решил убрать, что бы не мозолила под глазами…
  • Раздел Блог WordPress — где высвечиваются новости самой WordPress системы, например о выходе новой версии, либо о каких не будь нововведениях и т.д.
  • Входящие ссылки — совершенно бесполезная панель, показывает список сайтов, которые ссылаются на ваш блог, в адекватности работы этой системы я не убедился, по этому удалил с глаз долой
  • Плагины — показывает якобы самые популярные плагины и т. д. Лично мне не нужен данный рекламный блок, я всегда нахожу тот плагин, который мне нужен в сети интернет. И за все время, которое этот блог стоял в моей панели, я не взял оттуда ничего стоящего.
  • Другие новости WordPress — в этом я точно не нуждаюсь…

Как удалить ненужные блоки?

Для этого переходим а раздел «Настройки экрана», в правом верхнем углу, и снимаем галочки с тех разделов, которые вам не нужны. Вот, что у меня получилось:

А теперь давайте посмотрим каким стал общий вид Админ-панели. Согласитесь, стало на много аккуратнее, ничего лишнего, все что нужно для нормальной работы. Как мне кажется то, что нужно, а вам?

Гид по знакомству с WordPress.

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

Сама страница WP админки состоит из трех разделов, ну я подразделяю их на три составляющие, что бы вам было удобнее. Первое, это конечно же Главная страница — обозначена зеленым цветом, так же Меню — желтый цвет, и наконец  Админ-строка, которая находится в шапке сайта. Разберем их по отдельности…

Выгоды от использования WP_Query?

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

Преимущество класса WP_Query

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

Я не буду углубляться в подробности, но в общих чертах:

  • pre_get_posts — это хук, который модифицирует основной запрос. Вы можете использовать его с условным тегом для проверки отображения какого-то конкретного типа страницы (к примеру, главной), а затем преобразовать содержимое (к примеру удалить ссылки на связные посты). Минус в том, что вы не можете создать гибкий запрос по нужным вам критериям.
  • get_posts() и get_pages() очень похожи; различие видно из названия. Эти шаблонные теги используют класс , точнее говоря, осуществляют вызов за вас. В результате вы можете вывести только страницы или посты, в то время как позволяет осуществить доступ ко всей базе.
  • query_posts() модифицирует основной запрос, но его не стоит использовать в плагинах и темах. Причин несколько: замена основного запроса, возможные ошибки, в частности с разбиением информации по страницам, негативное влияние на скорость загрузки страницы. Если вам нужно преобразовать основной запрос, то для этого лучше воспользоваться методом , а для создания абсолютно нового запроса воспользоваться классом .

Для наглядности процессов, используемых в WordPress, можете взглянуть на диаграмму:

Когда следует использовать WP_Query

Существует множество ситуаций, когда вам может пригодиться класс :

  • Для добавления списка всех связных постов — к примеру все посты данной категории.
  • Для создания двух циклов на одной и той же странице: к примеру вывода заголовков ЧАВО и ответов в другой части страницы.
  • Для вывода свежих постов в сайдбаре или футере.
  • Для вывода таксономии WordPress по заданным параметрам.
  • Для извлечения типов постов, которые не выводятся по умолчанию, такие как вложения.
  • Для создания страниц с постами из определённого набора категорий.

An Introduction to the WP_Query WordPress Class

Thankfully, the power of WordPress and WooCommerce provides a solid base for crafting an effective sales platform, and with clever use of WP_Query, you can create dynamic, original product displays with a range of sorting methods to get all your wares in easy reach of your customers. What is WP_Query? It’s one of the core classes included with WordPress that can be used to create complex queries (a bit like searches, but with a lot more specifics!) that will return posts, which can then be displayed in a loop where we will get access to some of the important functions therein such as the_title() or the_excerpt(); the core building blocks we can use for manipulating our display.

Note: Something very important to be aware of when working with WP_Query is that using it has an impact on the variables that might need to be queried again later, so it’s necessary to reset global variables to their original state with the wp_reset_postdata() function; you’ll see this applied in our example code later in this article.

In this article though, we’ll go a step further by using WP_Query to grab not standard WordPress posts, but WooCommerce products; we’ll also look at sorting the queries to ensure that you’re getting the products that matter most for your display, whether its available products, items on promotion etc…

In the following sections we’ll be providing multiple code examples that you can freely use on your site; you should pack the example code into a shortcode which will display the posts generated by WP_Query, or alternatively you can create a widget with the example code in that you can place in any of the available position of your theme as needed. Ready to get coding?Then let’s go!

The base code structure

At the very beginning, the first thing we’re going to need is a starting block of code that we can modify to suit our needs:

<?php
$params = array('posts_per_page' => 5); // (1)
$wc_query = new WP_Query($params); // (2)
?>
<?php if ($wc_query->have_posts()) : // (3) ?>
<?php while ($wc_query->have_posts()) : // (4)
                $wc_query->the_post(); // (4.1) ?>
<?php the_title(); // (4.2) ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); // (5) ?>
<?php else:  ?>
<p>
     <?php _e( 'No Products' ); // (6) ?>
</p>
<?php endif; ?>

The above code pulls the titles of the five most-recent posts from our WordPress database using the following process:

  1. An array of parameters for WP_Query to work with is created; to start with it’s just the basic posts, but by adding more specifics to these parameters we can achieve different results for our queries.
  2. WP_Query is used to query the parameters created in the first line.
  3. The query is checked to see if it returned any results.
  4. If there are results, then we iterate over them:
    1. First, setting the global variable $post, which ensures that the next function works.
    2. Second, setting the the_title() variable, which is responsible for displaying the post title.
  5. Then, when the posts are displayed, we return the $post variable to its original state with the wp_reset_postdata function.
  6. In the event that the check in step 3 finds that there are no posts to display, instead of iterating over non-existent results we just display an appropriate prompt.

Создание нового файла шаблона

Первым шагом будет настройка нового файла шаблона в нашей теме, которая будет содержать отредактированную версию цикла из Twenty Sixteen. В папке вашей темы создайте подпапку с названием includes, где нужно создать новый файл, названный loop-category.php.

Теперь откройте файл template-parts/content.php из темы Twenty Sixteen и найдите такой код (большая часть файла):

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header">
        <?php if ( is_sticky() && is_home() && ! is_paged() ) : ?>
            <span class="sticky-post"><?php _e( 'Featured', 'twentysixteen' ); ?></span>
        <?php endif; ?>
 
        <?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>
    </header><!-- .entry-header -->
 
    <?php twentysixteen_excerpt(); ?>
 
    <?php twentysixteen_post_thumbnail(); ?>
 
    <div class="entry-content">
        <?php
            /* translators: %s: Name of current post */
            the_content( sprintf(
                __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
                get_the_title()
            ) );
 
            wp_link_pages( array(
                'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
                'after'       => '</div>',
                'link_before' => '<span>',
                'link_after'  => '</span>',
                'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
                'separator'   => '<span class="screen-reader-text">, </span>',
            ) );
        ?>
    </div><!-- .entry-content -->
 
    <footer class="entry-footer">
        <?php twentysixteen_entry_meta(); ?>
        <?php
            edit_post_link(
                sprintf(
                    /* translators: %s: Name of current post */
                    __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
                    get_the_title()
                ),
                '<span class="edit-link">',
                '</span>'
            );
        ?>
    </footer><!-- .entry-footer -->
</article><!-- #post-## -->

Скопируйте его в свой новый файл.

Редактирование шаблона

Цикл из Twenty Sixteen отображает больше, чем нам нужно для этого архива, поэтому мы его отредактируем. Мы хотим, чтобы отображались только цитаты, а не весь контент, поэтому мы его удалим.

В вашем новом файле loop-category.php найдите этот код и удалите его:

<div class="entry-content">
    <?php
        /* translators: %s: Name of current post */
        the_content( sprintf(
            __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
            get_the_title()
        ) );
 
        wp_link_pages( array(
            'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
            'after'       => '</div>',
            'link_before' => '<span>',
            'link_after'  => '</span>',
            'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
            'separator'   => '<span class="screen-reader-text">, </span>',
        ) );
    ?>
</div><!-- .entry-content -->

Следующим шагом будет замена функции twenty_sixteen_excerpt() на стандартную функцию the_excerpt(), поскольку версия Twenty Sixteen не содержит ссылку на всю запись.

Найдите эту строчку:

<?php twenty_sixteen_excerpt(); ?>

Замените её на эту:

<?php the_excerpt(); ?>

Нам также необходимо сделать несколько поправок в тегах заголовка. В шаблоне исправьте строку:

<?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>

Измените тэг h2 на h3:

<?php the_title( sprintf( '<h3 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h3>' ); ?>

Сохраните ваш файл шаблона. А теперь давайте вернёмся к вашему файлу category.php и продолжим работу там.

Задание 1

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

Рекомендации по подготовке

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

  1. Для отработки чтения слов-исключений можно использовать стихотворение The Chaos, написанное голландским учителем и автором Gerard Nolst Trenité.
  2. Удобно использовать параллельно текст и его транскрипцию.
  3. Для отработки интонации хорошо подходит прием shadow reading, когда учащийся одновременно слушает, как диктор читает текст книги, и повторяет, стараясь воспроизвести интонацию диктора.

Note for Skyeng teachers

Для такой работы можно использовать аудиокниги, которых много в курсах Self-study от Skyeng. Аудиокниги используются разных жанров и уровней сложности: от А2 до С1. Напомним, что в ЕГЭ задания базового уровня относятся к уровню А2+, задания повышенного уровня — к уровню В1, а задания высокого уровня — В2 по CEFR, что можно учитывать при выборе аудиокниг для работы над интонацией и произношением.

Параметры Статусов

Получает посты с указанным статусом.

Post_status(строка/массив)

Статус поста.

По умолчанию publish , а если пользователь авторизован добавляется еще и private . Если запрос запущен из админ части, добавляются еще и защищенные типы статусов: future , draft и pending . Все типы статусов:

  • publish — опубликованный пост.
  • pending — пост на модерации.
  • draft — черновик.
  • auto-draft — черновик, сохраненный самим WordPress (авто-сохранение).
  • future — запланированный пост.
  • private — личный пост.
  • inherit — ревизия или вложение.
  • trash — удаленный пост (в корзине). С версии 2.9.
  • any — все статусы, кроме статусов в параметре которых указано exclude_from_search=true . См. register_post_status() и get_post_stati() .

По умолчанию: «publish»

Посты по статусам

Получим только черновики:

$query = new WP_Query(«post_status=draft»);

Получим посты с разными статусами:

$query = new WP_Query(array(«post_status» => array(«pending», «draft», «future»)));

Получим все виды вложений:

$query = new WP_Query(array(«post_status» => «any», «post_type» => «attachment»));

How to Delete All Comments On WordPress?

There are three alternative ways to delete all comments on WordPress. Check out the tutorials below to help you decide which one best suits your preferences.

Use the WordPress Admin Dashboard

WordPress has a way to delete all comments quickly. You can access this feature from your admin dashboard — the Comment menu, to be exact.

  1. Login to your WordPress admin dashboard, and then navigate to the Comments section.
  2. On the Bulk Actions dropdown menu, choose the Move to Trash option. Select all comments, then click Apply.

Use a WordPress Plugin

WP Bulk Delete is one of the best plugins that will help you to delete all WordPress comments. It enables you to remove various types of data in bulk, including but not limited to comments. The best part is that you can implement filters and conditions based on your needs.

If you only need the basic features of a comment remover tool, the free version will do just fine. Should you need more filter options, you can upgrade to the Pro version for $29.00 per site.

First, you need to install the WordPress plugin. Once you’ve installed WP Bulk Delete, follow these steps to delete all WordPress comments:

  1. From your WordPress admin dashboard, navigate to the WP Bulk Delete -> Delete Comments section.
  2. Check the filters that you want to use. If you use the free version, you can filter the comments based on their status and publication date. Then, click Delete Comments.

Use phpMyAdmin

You can delete all WordPress comments directly from your database through phpMyAdmin. Despite so, this method requires knowledge about database and SQL. If you’re not familiar with it, you might want to reconsider using the previous methods instead.

phpMyAdmin offers two options to delete comments from your site — running an SQL query or emptying the comment table. Either way, you’re going to modify two tables where comments usually take place: wp_comments and wp_commentmeta.

Important! the tables’ names might differ depending on your database prefix.

Your database is accessible from your web hosting control panel. In this tutorial, we will show you how to access it from Hostinger’s hPanel.

Follow these steps to delete all WordPress comments using an SQL query:

  1. From your Hostinger hPanel, navigate to the phpMyAdmin.
  2. Identify which database you want to modify, then click Enter phpMyAdmin.
  3. In phpMyAdmin, click on the wp_comments table.
  4. Click on the SQL tab at the top to open the SQL query window.
  5. Choose one of the following queries to delete comments based on particular conditions:Delete all WordPress non-approved and pending comments:

    DELETE from wp_comments WHERE comment_approved =  '0'
    

    Delete all WordPress approved comments:

    DELETE from wp_comments WHERE comment_approved =  '1'
    

    Delete all WordPress trash comments:

    DELETE from wp_comments WHERE comment_approved =  'trash'
    

    Delete all WordPress spam comments:

    DELETE from wp_comments WHERE comment_approved =  'spam'
  6. Add the chosen query to the SQL query window, then click Go. Repeat this step several times according to the number of queries you want to execute.
  7. Repeat the entire steps to remove comments from the wp_commentmeta table.

If you want to delete all WordPress comments unconditionally, you can follow these steps:

  1. In phpMyAdmin, tick wp_comments and wp_commentmeta’s respective boxes to the left.
  2. Scroll down until you locate With selected dropdown menu. Click on it, then choose the Empty option.
  3. Click Yes to confirm that you want to execute the presented queries.

Here you have it! This way, you can quickly delete all WordPress comments.

WP_Query PHP код для вывода записей в КАТЕГОРИЯХ

Самый простой вывод постов, исключающий записи из конкретных категорий. Использую его для вывода на главной странице через index.php или home.php.

Также этот код занесен у меня в файл empty.php. Он нужен на тот случай, если человек зашел в категорию, где не должно быть никаких записей, там не будет ничего выводиться, кроме сообщения, что он не должен был попасть на эту страницу (раздел). И предлагаются инструменты для поиска на сайте.

<?php query_posts($query_string.’&cat=-1,-169,-40,-91′); ?>

Иногда в код, который выводит все статьи, но исключает определенные рубрики, требуется добавить пагинацию (&paged=’.$paged;), чтобы в последний страницах навигации не было пустых страниц.

В коде ниже выводятся записи с сортировкой по произвольному полю с ДАТОЙ. Выводятся записи с произвольным полем год, затем сортируются от последнего года к предыдущему.

<?php // Произвольное поле по которому будет сортировка $the_key = ‘1Year’; $args = array(     ‘meta_key’ => $the_key,     // Сортируем по значению цифры в произвольном поле     ‘orderby’ => ‘meta_value_num’,     // Сортируем от большего к меньшему     ‘order’ => ‘DESC’,     // Исключаем категории     ‘cat’ => ‘-310’ ); global $wp_query; query_posts(     array_merge(         $wp_query->query,         $args     ) ); ?>

WP_Query PHP код для вывода постов в разделе РЕЙТИНГ

Нижеследующий код выводит все статьи с произвольным полем год, сортируя по этому произвольному полю (от последнего года, до меньшего). Одновременно с этим исключает все записи из категорий меньше значения рейтинга 9.

<?php global $query_string; $paged = get_query_var( ‘paged’, 1 ); $loop = new WP_Query( $args ); $categoryvariable = $cat; $args = array(     ‘post_type’ => ‘post’,     ‘cat’ => $categoryvariable,     // Выводим по произвольному полю     ‘meta_key’ => ‘1Year’,     // Нужен для правильной работы пангинации     ‘paged’ => $paged,     ‘meta_query’=> array(         // Сравниваем поле РЕЙТИНГА с цифрой, меньше которой записи не выводить         ‘key’       => ‘1myRaiting’,         ‘compare’   => ‘>=’,         ‘value’     => 9,         ‘type’      => ‘numeric’,     ),     // Сортируем все записи по годам     ‘orderby’    => ‘meta_value_num’,     // От большего к меньшему     ‘order’      => ‘DESC’,               ); query_posts( $args ); ?>

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

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

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

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