9 вставок кода для WordPress

25 Мар 2023г. в 11:52

В данном уроке приводится несколько коротких, но весьма полезных вырезок кода для WordPress.



1. Скрываем верхнюю панель администратора
Начиная с версии 3.1, WordPress выводит верхнюю панель администратора для всех пользователей. От ее вывода можно отказаться с помощью профиля пользователя. Но если на сайте много пользователей/авторов, то лучше воспользоваться функцией show_admin_bar, чтобы одним действием решить задачу для всех:

1
show_admin_bar(FALSE);


2. Автоматическая очистка корзины
В файле /wp-config.php нужно вставить следующий код для автоматической очистки корзины от материалов, старше 5 дней:

1
define('EMPTY_TRASH_DAYS', 5 );


3. Включаем внутренний отладчик WordPress
При разработке сайта нужно видеть ошибки, которые возникают при выполнении кода. Не все ошибки вызывают остановку скрипта, они могут приводить к странным эффектам. Чтобы включить вывод отладочной информации WordPress вставьте следующий код в файл /wp-config.php:

1
define('WP_DEBUG', TRUE);
Вы будете удивлены той информацией, которая будет выводиться в нижний колонтитул. Только нужно помнить об отключении режима отладки перед публикацией сайта.



4. Перенаправление пользователей после авторизации
Когда пользователь авторизуется в системе, то по умолчанию он попадет на панель управления. Но с помощью фильтра login_redirect его можно перенаправить на главную страницу сайта, если он не является администратором системы:

add_filter("login_redirect", "subscriber_login_redirect", 10, 3);

function subscriber_login_redirect($redirect_to, $request, $user){

if(is_array($user->roles)){

if(in_array('administrator', $user->roles)) return home_url('/wp-admin/');

}

return home_url();

}
Используя роль пользователя , его можно перенаправлять на любую страницу.



5. Вывод миниатюры заметки по умолчанию
Начиная с версии v2.9 WordPress предоставляет для записей опцию выбора миниатюры. Для записи можно использовать изображение в качестве миниатюры по умолчанию.

В главном цикле добавляем код:

1
if(has_post_thumbnail()){
2

3
the_post_thumbnail();
4

5
}else{
6

7
echo '<img src="' . get_bloginfo('template_directory') . '/images/default_post_thumb.jpg" />';
8

9
}
Проверяем наличие миниатюры с помощью функции has_post_thumbnail()
если она есть, выводим ее функцией the_post_thumbnail()
в противном случае генерирует тег img для миниатюры по умолчанию
Вы можете иметь набор миниатюр по умолчанию и выбирать любую из них в случайном порядке.



6. Выводим "С момента публикации прошло: <время>" для записей и страниц
Если с момента публикации прошло меньше недели, то будем выводить прошедшее количество дней, а в другом случае - дату публикации. В главном цикле вставляем код:

$time_diff = current_time('timestamp') - get_the_time('U');

if($time_diff < 604800){//В неделе 604800 секунд

echo 'С момента публикации прошло: ' . human_time_diff(get_the_time('U'), current_time('timestamp'));

}else{

echo 'Опубликовано: ' . get_the_date() . ', ' . get_the_time();
};

human_time_diff() конвертирует дату в воспринимаемый человеком формат;
get_the_time() возвращает время создания записи (параметр ‘U’ используется для формирования значения в формате Unix);
current_time() возвращает текущее время (параметр ‘timestamp’ используется для формирования значения в формате Unix).

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

if($comment->user_id == get_the_author_meta('ID')){

echo '<div class="comment_wrapper author_comment">';

}else{

echo '<div class="comment_wrapper">';

}

Мы сравниваем идентификатор автора комментария с идентификатором автора записи, полученным с помощью функции get_the_author_meta(). Если они идентичны, используем класс author_comment, стили которого задаются в CSS.

8. Подсчитываем количество комментариев, сделанных пользователем
Можно сделать прямой запрос к базе данных WordPress для получения информации о пользователе. Поместите код данной функции в файл functions.php темы и вызывайте ее тогда, когда нужно вывести информацию об активности пользователя.

function get_site_data(){

global $wpdb;

$users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");

$posts = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->posts WHERE post_status = 'publish'");

$comments = $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments");

echo '<p>' . 'Пользователь ' . $users . ' написал ' . $comments . ' комментариев в ' . $posts . ' записях</p>';

}