9 трюков для WordPress, которые вам обязательно пригодят
Представляем несколько коротких, но полезных фрагментов кода, которые немного упростят вашу жизнь, как 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 подгружать скрипты в правильном порядке, чтобы они могли спокойно вместе работать.