Запрещаем запросы от вредоносных 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
