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

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

HIT

14.06.2015

4570

Разгрузка 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 Читать далее »

/ /
Практикум по функциям

Практикум по функциям

В процессе штудирования книги «Изучаем PHP 7» (Дэвид Скляр) появилась мысль помечать некоторые моменты, касающиеся как функций, так и php в целом. Краткий обзор функций Если задать простую функцию function Читать далее »

Разделение записей по алфавиту

Разделение записей по алфавиту

Реализуем сортировку и разделение записей по алфавиту. Данный функционал может пригодится для вывода и разделения по алфавиту категорий. Можно разделять города в разделе Где купить и т.д. Описанное решение данной Читать далее »

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

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
Добавление кнопки more при узком меню
Рекомендации для васДобавление кнопки more при узком менюOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.