/ Wordpress / Расширение функционала WP

Расширение функционала WP

HIT

14.06.2015

4747

Разгрузка functions.php

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

В основном файле functions.php подключаем фрагменты из директории inc

require get_template_directory() . '/inc/plagins-updater.php'; require get_template_directory() . '/inc/simple-widget.php'; require get_template_directory() . '/inc/wordpress-breadcrumbs.php'; require get_template_directory() . '/inc/wordpress-customizer.php'; require get_template_directory() . '/inc/wordpress-updater.php'; require get_template_directory() . '/inc/wordpress-writer.php'; require get_template_directory() . '/inc/wp-shortcoder.php'; 
deadspace2

Расширение основного функционала WP

Узнать подробнее что такое функция можно здесь.

// html теги в описании рублики
remove_filter('pre_term_description', 'wp_filter_kses');
remove_filter('pre_term_description', 'wp_kses_data');


// Шорткоды в описании рублики
add_filter( 'term_description', 'shortcode_unautop');
add_filter( 'term_description', 'do_shortcode' );


// добавление цитаты в редактировании страницы
add_post_type_support( 'page', 'excerpt' );


// настройка количества символов цитаты по умолчанию
function custom_excerpt_length() {
$length = 50;
return $length;
}
add_filter('excerpt_length', 'custom_excerpt_length');


// регистрируем меню
function register_my_menus() {
register_nav_menus (
array( 'header-menu' => 'header-menu1', 'left-menu' => 'left-menu1')
);
}


// запуск меню
if (function_exists('register_nav_menus')) {
 add_action( 'init', 'register_my_menus' );
}


//добавление поддержки миниатюр
if ( function_exists('add_theme_support') ) {
 add_theme_support('post-thumbnails');
}


//регистрируем сайтбар
register_sidebar(
 array(
 'id' => 'primary',
 'name' => __( 'Primary' ),
 'description' => __( 'Описание сайтбара (видно в админ панели).' ),
 'before_widget' => '<div class="widgit">',
 'after_widget' => '</div>',
 'before_title' => '<h2 class="headwidgit">',
 'after_title' => '</h2>'
 )
);

Поддержка PHP-кода в виджетах

// Поддержка PHP в виджетах
function php_in_widgets($widget_content) {
	if (strpos($widget_content, '<' . '?') !== false) {
		ob_start();
		eval('?' . '>' . $widget_content);
		$widget_content = ob_get_contents();
		ob_end_clean();
	}
	return $widget_content;
}
add_filter('widget_text', 'php_in_widgets', 99);

Данная функция будет действовать и на Текстовый виджет и на виджет Пользовательский HTML, которые были добавлены в WordPress 4.8

Решение мягко говоря нестабильное, лучше использовать плагин PHP Code Widget (200 000).

Только при установке выплыла ошибка create_function() is deprecated. Решил проблему заменив функцию в единственном файле плагина execphp.php с

add_action('widgets_init', create_function('', 'return register_widget("PHP_Code_Widget");'));

на

function php_code_widget_init_widget () {
    return register_widget('PHP_Code_Widget');
}
add_action ('widgets_init', 'php_code_widget_init_widget');

Меняем текст на логотип

Мы можем любое слово на странице заменить на логотип:

function replace_text_wps($text){
    $replace = array(
    'UNDERSUN' => '<img class="company-logo" src="/wp-content/uploads/2017/09/undersun_logo-classic.png">'
    );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
}

Либо сделать слово (или несколько слов) ссылкой:

function replace_text_wps($text){
    $replace = array(
    'thesis' => '<a href="http://mysite.com/myafflink" rel="nofollow">thesis</a>',
    'studiopress' => '<a href="http://mysite.com/myafflink" rel="nofollow">studiopress</a>'
    );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
}

Далее привязываем функцию к содержимому записи, либо к отрывку:

add_filter('the_content', 'replace_text_wps'); 
add_filter('the_excerpt', 'replace_text_wps');

Удалить слово Архив: из заголовков архивов

// Удалить слово Архив из заголовков архивов
add_filter( 'get_the_archive_title', function( $title ){
	return preg_replace('~^[^:]+: ~', '', $title );
});
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Фильтр по меткам (изменение основного запроса)

Фильтр по меткам (изменение основного запроса)

Реализуем фильтрацию записей по меткам путем изменения основного запроса на лету (ajax). Находим все теги записей входящих в категорию Данный код можно вставить в боковую колонку в виде виджета. <?php Читать далее »

/ /
Хуки WordPress

Хуки WordPress

Хуки WordPress — важнейший элемент функционирования ядра WordPress. Хуки (зацепы) действуют следующим образом: система WP содержит множество различных хуков (фильтров и экшенов), которые являются частью структуры ядра и имеют определенную Читать далее »

Breadcrumbs

Breadcrumbs

Breadcrumbs (хлебные крошки) — это удобный инструмент навигации, без которого не обходится ни один современный сайт. На данный момент есть несколько альтернативных вариантов крошек от разных разработчиков, помимо нескольких десятков Читать далее »

Добавить комментарий

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6170

Пока нет комментариев. Будь первым!

Расширение функционала WP Расширение функционала WP Расширение функционала WP
Адаптация woocommerce под свой шаблон
Рекомендации для васАдаптация woocommerce под свой шаблонOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.