Представляем несколько коротких, но полезных фрагментов кода, которые немного упростят вашу жизнь, как WordPress разработчика, Мы поговорим обо всем понемногу, начиная с автоматического удаления постов, быстрого выбора иконки поста и заканчивая перенаправлением пользователей, как только они авторизировались. Начнем с нескольких простых сниппетов в одну строку.
1. Скрываем внешнюю панель управления
Начиная с версии 3. 1, WordPress предоставляет внешнюю панель администратора для всех пользователей. Вы можете посчитать, что она ухудшает вид вашего сайта. Чтобы отключить ее, используйте функцию show_admin_bar: show_admin_bar(FALSE);
Вы также можете отключить ее с помощью своего «Профиля пользователя», но наш способ особенно удобен, если у вас на сайте много авторов / пользователей, и вам необходимо отключить панель для всех.
2. Автоматически удаляем посты из корзины
Количество постов в корзине может нарастать, если вы забываете их удалять. Используйте этот код в /wp-config. php, чтобы очистить корзину: define(‘EMPTY_TRASH_DAYS’, 5);
3. Включаем внутренний отладчик WordPress
При разработке необходимо видеть ошибки, выдаваемые вашим кодом. Помните, что не все ошибки останавливают выполнение скрипта, но, тем не менее, это ошибки, и они могут странным образом влиять на другие части вашего кода. Потому, включите отладку WordPress в вашем файле /wp-config. php: 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. Показываем стандартную иконку поста
Начиная с версии 2. 9, WordPress предоставляет возможность создавать иконку поста, как, например, вы можете увидеть здесь, на wpcafe. org. При добавлении поста администратором это называется «Featured Image» (Миниатюра). Но если у вас нет особой картинки для поста, вы можете просто вызвать картинку по умолчанию.
Внутри цикла: if(has_post_thumbnail()){ the_post_thumbnail();
}else{ echo ”;
} проверяем, есть ли иконка у поста с помощью has_post_thumbnail
Если да, показываем ее с помощью the_post_thumbnail ()
Иначе генерируем тег img для стандартной картинки
У вас даже может быть несколько картинок по умолчанию, одну из которых вы будете выбирать случайным образом.
6. Показываем время с момента публикации для постов и комментариев
Вместо «Опубликовано 25/11/1011» можно вывести «Опубликовано 3 дня назад».
Используется в цикле: echo human_time_diff(get_the_time(‘U’), current_time(‘timestamp’)). ‘ ago’;
Также можно использовать для комментариев: echo human_time_diff(get_comment_time(‘U’), current_time(‘timestamp’)). ‘ ago’;
Или можно показывать обычную дату / время только если пост старше недели, в противном случае выводить время с момента публикации.
$time_diff = current_time(‘timestamp’) – get_the_time(‘U’); if($time_diff < 604800){//seconds in a week = 604800 echo ‘Posted ‘. human_time_diff(get_the_time(‘U’), current_time(‘timestamp’)). ‘ ago’;
}else{ echo ‘Posted on ‘. get_the_date(). ‘, ‘. get_the_time();
};
7. Отдельный стиль для комментариев автора
Хорошее решение — показать пользователям, что автор поста пишет комментарий к посту. Все, что для этого нужно сделать, это добавить класс для контейнера комментария, а затем прописать этот стиль в теме.
Чтобы определить, какие комментарии были написаны автором поста, мы используем этот код для вывода названия класса: if($comment->user_id == get_the_author_meta(‘ID’)){ echo ”;
}else{ echo ”;
}
Мы сравниваем идентификатор пользователя, оставившего комментарий, с идентификатором автора поста, который получаем с помощью функции get_the_author_meta. Если они совпадают, мы выводим класс author_comment, стиль для которого мы прописываем в css.
8. Показываем информацию о пользователях, постах, комментариях вашего сайта на WordPress
Вы можете сделать запрос напрямую в вашу базу данных WordPress, чтобы показать нужную информацию по сайту. Вставьте эту функцию в файл темы functions. php и вызывайте ее в любом месте с помощью get_site_data () 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 ”. $users. ‘ members have made ‘. $comments. ‘ comments in ‘. $posts. ‘ posts’;
}
Это лучше, чем вызывать стандартные функции WordPress, так как можно подсчитать посты всех типов, а также только опубликованные на данный момент посты.
9. Правильное добавление файла JavaScript
WordPress предоставляет функцию wp_enqueue_script для безопасного добавления скриптов.
Допустим, наша папка со скриптами находится внутри папки шаблонов, и там у нас есть файл do_stuff. js Так что путь у нас получается такой: url_to_template_dir/scripts/do_stuff. js
Давайте теперь правильно вставим наш скрипт. Код нужно вставить перед wp_head в ваш файл шапки (header. php):
$script_url = get_template_directory_uri(). ‘/scripts/do_stuff. js’; wp_enqueue_script(‘do_stuff’, $script_url);
Здесь мы соединяем путь к нашему скрипту и его название с результатом WordPress-функции get_template_directory_uri
Затем мы добавляем наш скрипт, задавая для него идентификатор (для возможного дальнейшего использования) и URL скрипта. Теперь WordPress будет подключать наш скрипт на каждой странице.
Реальное преимущество этого в том, что если, например, наш скрипт do_stuff – это jQuery скрипт, нам также нужно иметь подгруженный jQuery.
Теперь же jQuery по умолчанию подключен в WordPress и был предварительно зарегистрирован с идентификатором jQuery. Так что все, что нам нужно – это добавить наш jQuery, а затем добавить наш do_stuff. js, вот так: wp_enqueue_script(‘jquery’);
$script_url = get_template_directory_uri(). ‘/scripts/do_stuff. js’; wp_enqueue_script(‘do_stuff’, $script_url, array(‘jquery’));
Обратите внимание на третий параметр в wp_enqueue_script для do_stuff: он сообщает WordPress, что наш скрипт do_stuff зависим от скрипта с идентификатором jquery. Это важно, так как значит, что jquery будет подгружен перед do_stuff.
Вы можете поменять местами команды wp_enqueue_script и это не будет иметь значения, так как установленные зависимости между скриптами позволяют WordPress подгружать скрипты в правильном порядке, чтобы они могли спокойно вместе работать.
процессе работы WordPress. Чтобы включить внутренний отладчик, добавьте следующий код в файл wp-config.php:
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
4. Быстрый выбор иконки поста
WordPress предоставляет множество встроенных иконок для различных типов постов. Чтобы быстро выбрать иконку поста, добавьте следующий код в файл functions.php вашей темы:
function set_post_type_icon($post_id, $post) {
$icon = ”;
switch($post->post_type) {
case ‘post’:
$icon = ‘dashicons-admin-post’;
break;
case ‘page’:
$icon = ‘dashicons-admin-page’;
break;
//добавьте свои условия для других типов постов
}
echo ‘
‘;
}
add_action(‘admin_head-post.php’, ‘set_post_type_icon’);
add_action(‘admin_head-post-new.php’, ‘set_post_type_icon’);
5. Перенаправление пользователей после авторизации
При авторизации пользователей WordPress перенаправляет их на главную страницу администратора. Если вы хотите изменить это поведение, добавьте следующий код в файл functions.php вашей темы:
function redirect_after_login() {
return home_url();
}
add_filter(‘login_redirect’, ‘redirect_after_login’);
консоли браузера. Включите внутренний отладчик, установив значение WP_DEBUG в true в файле wp-config.php: define(‘WP_DEBUG’, true);
4. Быстрый выбор иконки поста
Добавьте следующий код в functions.php, чтобы быстро выбирать иконку для поста и отображать ее в админ-панели WordPress:
add_action( ‘admin_head’, ‘wpse65087_admin_menu_icon’ );
function wpse65087_admin_menu_icon() {
global $post_type;
if ( ‘post’ != $post_type ) // Укажите тип поста, для которого необходимо выбирать иконку
return;
echo ‘
‘;
}
5. Перенаправление пользователей после авторизации
Используйте следующий код, чтобы автоматически перенаправлять пользователей на определенную страницу после авторизации. Добавьте его в functions.php:
function wpse_login_redirect( $redirect_to, $request, $user ) {
return home_url( ‘/your-page’ ); // Замените “/your-page” на URL нужной страницы
}
add_filter( ‘login_redirect’, ‘wpse_login_redirect’, 10, 3 );
Вот несколько полезных фрагментов кода, которые могут пригодиться WordPress разработчикам. Надеюсь, они помогут вам упростить работу и улучшить ваш сайт. Удачи вам!