Полезные WordPress хуки
Полезные хуки по работе с WordPress: фильтры, события и просто полезный PHP-код при разработке сайта на WordPress.
Отключение редакций WordPress
Отключение Emojii
// Отключение Emojii
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_wp_emojis_in_tinymce' );
function disable_wp_emojis_in_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
Отключение RSS-ленты
// Удаление ссылки RSS-ленты записей, комментариев, категорий и архивов
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
Изменить почту в админке WordPress без подтверждения

// Изменить почту в админке WordPress без подтверждения
remove_action( 'add_option_new_admin_email', 'update_option_new_admin_email' );
remove_action( 'update_option_new_admin_email', 'update_option_new_admin_email' );
function wpdocs_update_option_new_admin_email( $old_value, $value ) {
update_option( 'admin_email', $value );
}
add_action( 'add_option_new_admin_email', 'wpdocs_update_option_new_admin_email', 10, 2 );
add_action( 'update_option_new_admin_email', 'wpdocs_update_option_new_admin_email', 10, 2 );
Подтверждать новый e-mail будет не нужно. На почту лишь придёт уведомление о смене почты
Убрать (скрыть) версию WordPress
// удаляем версии CSS и JS файлов
function vc_remove_wp_ver_css_js( $src ) {
if ( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
// удаляем <meta name="generator" content="WordPress 1.2.3" />
add_filter('the_generator', '__return_empty_string');
Удалить иконку комментариев из админ бара WordPress
// Удаление иконки комментариев из админ бара
add_action( 'admin_bar_menu', 'clean_admin_bar', 999 );
function clean_admin_bar( $wp_admin_bar ) {
$wp_admin_bar->remove_node('comments');
}
Изменить текст в подвале админки
// изменяем текст в подвале админки
add_filter('admin_footer_text', 'footer_admin_func');
function footer_admin_func () {
echo 'Разработка темы: <a href="https://only-to-top.ru" target="_blank">Солдатов Николай</a>. Работает на <a href="http://wordpress.org" target="_blank">WordPress</a>.';
}
Длина обрезки отрывка и изменение последних символов - excerpt_length(), excerpt_more()
Чтобы задать число выводимых слов статьи (по дефолту - 55), существует фильтр excerpt_length а для замены конструкции [...] на конце - фильтр excerpt_more
Код для functions.php
// длина excerpt
add_filter( 'excerpt_length', function(){
return 20;
} );
// символы на конце excerpt
add_filter('excerpt_more', function($more) {
return '...';
});
Обрезать длину the_content()
Чтобы задать число выводимых символов заголовка, нам нужно создать функцию в functions.php и использовать её в файле шаблона
function trim_title_chars($count, $after) {
$title = get_the_title();
if (mb_strlen($title) > $count) $title = mb_substr($title, 0, $count);
else $after = '';
echo $title . $after;
}
Использование
<?php trim_title_chars(55, '...'); ?>
Второй способ
В functions.php пишем
// Обрезаем the_content
// Выводить echo content(80); вместо the_content()
function content($limit) {
$content = explode(' ', get_the_content(), $limit);
if (count($content)>=$limit) {
array_pop($content);
$content = implode(" ",$content).'.';
} else {
$content = implode(" ",$content);
}
$content = preg_replace('/\[.+\]/','', $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
return $content;
}
Для вывода использовать
<?php echo content(38); ?>
Показать используемый шаблон
Для того чтобы вывести какой шаблон используется на странице, добавим следующий PHP-код в functions.php
add_action('wp_head', 'show_template'); // вывести перед шапкой
function show_template(){
global $template;
echo "<div style='padding:20px;background:#1b5e20;color:#fff;text-align:center;'>👉 $template 👈</div>";
}
Выполнение кода для определенного шаблона страниц - is_page_template
Пример: выполнить код на странице, использующий шаблон collections
<?php if ( is_page_template('page-collections.php') ){ ?>
// code
<?php } ?>
Пример: выполнить код на всех страницах, кроме kitchens
<?php if ( !is_page_template('page-kitchens.php') ){ ?>
// code
<?php } ?>
Выполнить код в том случае, если это главная страница
<?php if( is_front_page() ) { ?>
// code
<?php } ?>
Какой тип записи (post_type) используется - get_post_type
Пример: если тип записи collections - то выполнить необходимый PHP-код
<?php
$post_type = get_post_type( $post_id );
if ( $post_type == 'collections' ) {
// code
};
?>
Ссылки на предыдущий/следующий пост
Данный код будет также отлично выводить ссылки на предыдущую/следующую страницу и для произвольных типов записей
$prev_page = get_previous_post(); // получаем объект предыдущего поста
$next_page = get_next_post(); // получаем объект следующего поста
if ( $prev_page->post_title ) { // если существует предыдущий пост
echo '<a href="' . get_permalink( $prev_page ) . '" title="К посту: ' . esc_attr( $prev_page->post_title ) . '" class="prev-page">Back</a>';
} else {
echo '<div class="prev-page--disable">Back</div>';
};
echo "<span>|</span>";
if ( $next_page->post_title ) { // если существует следующий пост
echo '<a href="' . get_permalink( $next_page ) . '" title="К посту: ' . esc_attr( $next_page->post_title ) . '" class="next-page">Next</a>';
} else {
echo '<div class="next-page--disable">Next</div>';
};
Метки для страниц - фильтр display_post_states
Рассмотрим, как добавить свои метки для страниц / записей при помощи фильтра display_post_states

add_filter( 'display_post_states', 'page_descr', 10, 2 );
function page_descr( $post_states, $post ){
if( $post->post_type === 'page' ){
if( $post->post_name === 'video' ){ // ярлык (slug) страницы
$post_states[] = 'Страница "Преимущества"';
}
if( $post->ID === 293 ){ // id страницы
$post_states[] = 'Страница "Публикации"';
}
// множественный выбор страниц
if( in_array( $post->ID, ['292','25','295'] ) ){
$post_states[] = 'Страница ...';
}
}
return $post_states;
}
Дополнительные плюшки
- Шпаргалка по работе с WordPress.
- Шпаргалка по работе с WooCommerce.
- Шпаргалка по работе с ACF.
- Как скрыть пункты меню в админке WordPress, изменить их порядок - статья.
- Как установить свой логотип при входе в админку WordPress вместо стандартного.
- Подборка лучших плагинов для WordPress на 2021 год.
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Статьи из данной категории:
Комментарии
- Комментариев пока нет.