Рубрика: Страницы

Как включить комментарии для страниц по умолчанию?

Метабокс Обсуждение

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

Как отключить выбор родительской страницы?

Элемент select со всеми страницами сайта

При редактировании страницы вам доступен метабокс "Свойства страницы", где вы можете выбрать родительскую страницу. Даже если этот метабокс отключен в "Настройках экрана" WordPress все равно будет грузить весь список существующих страниц в select элемент (на скриншоте). Чем это плохо? Да ничем, если у вас правильно организован сайт. Если же вы построили свой сайт целиком на использовании страниц, то тут могут возникнуть проблемы (так как движок всегда будет грузить весь список страниц, даже если их у вас много тысяч).

Как проверить существование родительской страницы?

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

//условный тег проверки родительской страницы start
function is_subpage() {
    global $post;
    if (is_page() && $post->post_parent) {
        return $post->post_parent;
    } else {
        return false;
    }
}
//условный тег проверки родительской страницы end

Использовать этот условный тег в коде нужного шаблона темы можно так:

Как скрыть в админке сайта определенные страницы?

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

//скрытие страниц от редактирования в админке start
function wph_hide_page_admin($query) {
	if (!is_admin()) return $query;
	global $pagenow;
	if('edit.php' == $pagenow && (get_query_var('post_type') 
        && 'page' == get_query_var('post_type')))
            $query->set('post__not_in', array(2,8,9) ); // id страниц
	return $query;
}
add_action('pre_get_posts' ,'wph_hide_page_admin');
//скрытие страниц от редактирования в админке end

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

Как исключить страницы из результатов поиска?

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

//исключение страниц из результатов поиска start
function wph_exclude_pages($query) {
    if ($query->is_search) {
        $query->set('post_type', 'post');
    }
    return $query;
}
add_filter('pre_get_posts','wph_exclude_pages');
//исключение страниц из результатов поиска end

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

Как добавить «Цитату» для страниц?

По умолчанию, WordPress создает поле "Цитата" только для записей в блоге. Добавить поле "Цитата" для страниц достаточно легко, для этого вставьте в файл functions.php вашей темы код:

//Добавление "Цитаты" для страниц start
function page_excerpt() {
    add_post_type_support('page', array('excerpt'));
}
add_action('init', 'page_excerpt');
//Добавление "Цитаты" для страниц end

И при добавлении (или редактировании) ваших страниц вы увидите поле "Цитата":