10 полезных сниппетов WordPress для functions.php

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

// Temp Maintenance - with http response 503 (Service Temporarily Unavailable)
// This will only block users who are NOT an administrator from viewing the website.
function wp_maintenance_mode(){
    if(!current_user_can('edit_themes') || !is_user_logged_in()){
        wp_die('Maintenance, please come back soon.', 'Maintenance - please come back soon.', array('response' => '503'));
    }
}
add_action('get_header', 'wp_maintenance_mode');

Данный код позволит производить технические работы (например, смена темы) на сайте. По окончании работ достаточно поставить символы комментариев // перед 5 строчкой, вот так:

// wp_die('Maintenance, please come back soon.', 'Maintenance - please come back soon.', array('response' => '503'));

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

// Set the new image sizes
if(function_exists( 'add_image_size')){
	add_image_size('blog-large', 900, 700, false);
}
// Tell the media panel to add the new size to the dropbown
function custom_image_sizes($sizes) {
        $addsizes = array(
                "blog-large" => __("X-Large")
                );
        $newsizes = array_merge($sizes, $addsizes);
        return $newsizes;
}
add_filter('image_size_names_choose', 'custom_image_sizes');

Для добавления большего количества размеров, создайте больше add_image_size.

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

// Add rel tag to gallery images (Used for some Lightbox plugins / code)
function addlightboxrel_replace($content){
	global $post;
	$pattern = "/<a>]*).(bmp|gif|jpeg|jpg|png)('|")(.*?)>(.*?)</a>/i";
	$replacement = '<a>$7';
	$content = preg_replace($pattern, $replacement, $content);
	return $content;
}
add_filter('the_content', 'addlightboxrel_replace', 12);
add_filter('get_comment_text', 'addlightboxrel_replace');

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

// Change the failed login message for extra WordPress Secruty
function failed_login() {
    return 'Incorrect login information.';
}
add_filter('login_errors', 'failed_login');
// Remove the WP version for extra WordPress Secruty
function remove_wp_version(){
    return '';
}
add_filter('the_generator', 'remove_wp_version');

Полезен для тех, у кого старая версия WordPress. Помните, чем новее версия, тем сложней взлом. Однако, хотя незнание версии и усложнит процесс взлома, но не защитит от него.

// Add a class to the last post in a loop
function last_post_class($classes){
	global $wp_query;
	if(($wp_query->current_post+1) == $wp_query->post_count) $classes[] = 'last';
	return $classes;
}
add_filter('post_class', 'last_post_class');

Код добавляет класс «last» к последней записи цикле.

Для защиты ссылки mailtio от натиска спам сообщений используйте код:

// Anti Spam Mailto Links
function email_encode_function($atts, $content){
return '<a href="'.antispambot($content).'">'.antispambot($content).'</a>';
}
add_shortcode('email', 'email_encode_function');

Чтобы использовать ссылки, защищенные от спама, используйте шорткод:

[email]email@me.com[/email]

Если вы вручную следите за обновлением ядра WordPress, то используйте следующий фрагмент кода:

// Hide WordPress Update
function wp_hide_update() {
    remove_action('admin_notices', 'update_nag', 3);
}
add_action('admin_menu','wp_hide_update');

Он избавит вас от сообщения о новой версии в админке.

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

// Output a snapshot of any website!
function wp_snap($atts, $content = NULL) {
        extract(shortcode_atts(array(
			"snap" => 'http://s.wordpress.com/mshots/v1/',
			"url" => 'http://wpdaily.co/',
			"alt" => 'WPDaily',
			"w" => '400', // width
			"h" => '300' // height
        ), $atts));
		$img = '';
        return $img;
}
add_shortcode("snap", "wp_snap");

Для использования этого шорткода, вставьте в текст записи следующее:

[snap url="https://n-wp.ru/" alt="n-wp.ru - блог о WordPress" w="400" h="300"]
// Admin Note
function adminnote($atts, $content = NULL){
	if(current_user_can('edit_themes') || is_user_logged_in()){
		return '
Admin Notice
‘ . $content . ‘
';
	}
}
add_shortcode('note', 'adminnote');

Вышеуказанный фрагмент позволит создавать заметки, видные только администраторам. Используйте шорткод

[note]Этот текст виден только администраторам[/note]

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

Источник: My Top 10 WordPress Code Snippets

Создай свой первый сайт на WordPress

Рут
Оцените автора
Добавить комментарий

  1. Ruslan

    Про добавление rel… Код ужасно не оптимизированный.
    Вот сниппет, который использую я:

      function add_gallery_rel( $link ) {
        return str_replace ('<a href=', '<a rel="fancybox" href=', $link);
      }
      add_filter( 'wp_get_attachment_link', 'add_gallery_rel' );
    Ответить
    1. tiaurus

      Спасибо! Приведенный вами вариант намного проще.

      Ответить