Пачка полезных сниппетов для блога. Часть 22

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Запрещаем запросы от вредоносных URL

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

global $user_ID;
if($user_ID) {
    if(!current_user_can('administrator')) {
        if (strlen($_SERVER['REQUEST_URI']) > 255 ||
            stripos($_SERVER['REQUEST_URI'], "eval(") ||
            stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
            stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
            stripos($_SERVER['REQUEST_URI'], "base64")) {
                @header("HTTP/1.1 414 Request-URI Too Long");
                @header("Status: 414 Request-URI Too Long");
                @header("Connection: Close");
                @exit;
        }
    }
}

Скрываем панель уведомления об обновлениях в WordPress

Добавляем следующий сниппет в файл functions.php вашей темы:

add_action('admin_head', 'remove_upgrade_nag');
function remove_upgrade_nag() {
   echo '<style type="text/css">
           .update-nag {display: none}
         </style>';
}

Изменяем стандартное ‘Введите заголовок’ для пользовательских типов записей

Код изменит стандартное сообщение при создании новой записи с ‘Введите заголовок’ на ‘Пожалуйста, укажите заголовок для записи’

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter( 'enter_title_here', 'change_default_title' );
function change_default_title( $title ){
     $screen = get_current_screen();
     switch($screen->post_type) {
        case 'post':
            $title = 'Пожалуйста, укажите заголовок для записи';
            break;
     }
     return $title;
}

Можно использовать тот же код для пользовательских типов записей. Просто добавляем другое условие с названием пользовательских типов записей и указываем заголовок для них.

switch($screen->post_type) {
   case 'post':
         $title = 'Пожалуйста, укажите заголовок для записи';
         break;
   case 'article':
         $title = 'Пожалуйста, укажите заголовок для статьи';
         break;
}

Вход под администратором с именем пользователя или email адресом

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

add_filter( 'gettext', 'change_username_wps_text' );
add_action('wp_authenticate','login_with_email_address');
function login_with_email_address($username) {
    $user = get_user_by('email',$username);
    if(!empty($user->user_login))
        $username = $user->user_login;
    return $username;
}
function change_username_wps_text($text){
   if(in_array($GLOBALS['pagenow'], array('wp-login.php'))){
     if ($text == 'Username'){
        $text = 'Username / Email';
     }
   }
   return $text;
}

Отображаем миниатюры в ленте RSS

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter('the_content_feed', 'rss_post_thumbnail');
function rss_post_thumbnail($content) {
    global $post;
    if( has_post_thumbnail($post->ID) )
        $content = '<p>' . get_the_post_thumbnail($post->ID, 'thumbnail') . '</p>' . $content;
    return $content;
}

Отключаем автосохранение записей в WordPress

Добавляем следующий сниппет в файл functions.php вашей темы:

add_action( 'wp_print_scripts', 'disableAutoSave' );
function disableAutoSave(){
    wp_deregister_script('autosave');
}

Открываем все ссылки в новом окне

Все ссылки в записях будут открываться в новом окне (вкладке) браузера.
Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter('the_content', 'open_in_new_window');
function open_in_new_window($text) {
    $return = str_replace('<a', '<a target="_blank"', $text);
    return $return;
}

Подсвечиваем текущую страницу в меню

Добавляем следующий сниппет в файл style.css вашей темы:

/* Подсветка с помощью элемента list */
li.current_page_item {
  background:#999;
}
/* Подсветка с помощью элемента link */
li.current_page_item a {
  color:#fff;
}

Выполняем несколько запросов к произвольным типам записей с помощью шорткода

Добавляем следующий сниппет в файл functions.php вашей темы:

add_shortcode('customPost', 'customPostType_shortcode');
function customPostType_shortcode()
{
extract(shortcode_atts(array(
        'type' => 'post',
        'limit' => '10',
        ),$atts));
  
        //Запрос
    query_posts('post_type='.$type.'&showposts='.$limit);
  
        //Цикл
       if ( have_posts() ) : while ( have_posts() ) : the_post();
                echo  "<h3><a href="".the_permalink($post->ID)."">".get_the_title($post->post_title)."</a></h3>";
                echo  the_excerpt();
        endwhile; else:
    endif;
  
        //Сбрасываем запрос
    wp_reset_query();
}

Использование:

[customPost type=movies,books limit=5]

Убираем или заменяем один или более классов меню wordpress

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter('wp_nav_menu', 'wpds_wp_nav_menu');
function wpds_wp_nav_menu($text) {
  $replace = array(
    'current-menu-item'     => 'current',
    'sub-menu' => '',
  );
 
  $text = str_replace(array_keys($replace), $replace, $text);
  return $text;
}

Результат:
“sub-menu” класс убирается из сгенерированной навигации, а класс “current-menu-item” будет заменен на “current”.

Источник: WPDevSnippets

VN:F [1.9.22_1171]

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии