Информация Wordpress: плюшки файла functions.PHP ))

Статус
В этой теме нельзя размещать новые ответы.

Makhovikov

Создатель
Регистрация
30 Июн 2016
Сообщения
33
Реакции
4
Пара плюшек от меня:

1. favicon. Для всех нормальных браузеров команда для вывода иконки уже в коде есть. <link rel="icon" href="Для просмотра ссылки Войди или Зарегистрируйся" type="image/x-icon" />
Но Internet Explorer хочет rel="shortcut icon". Так что вписываем это в functions. В итоге для иконки будет 2 строки. И так и сяк.

Код:
/* Дополнительное определение иконки сайта для совместимости с Microsoft Internet Explorer */
function shortcut_favicon() {
   echo '<link rel="shortcut icon" href="' . esc_url( frontier_option('favicon') ) . '" type="image/x-icon" />' . "\n";
}
add_action( 'wp_print_styles', 'shortcut_favicon' );


2. В WP robots.txt по-умолчанию генерируется сам. Можно влиять на этот процесс генерации через functions.

Код:
/* Дописываем инструкции в автогенерируемый robots.txt прямо в functions.php */
add_filter('robots_txt', 'add_robotstxt');
function add_robotstxt($text){
   
   // Сюда пишем все директивы, которые нравятся. User-agent: * там уже есть по-умолчанию.
   $text .= "Disallow: /wp-admin";
   $text .= "Disallow: /wp-includes";
   $text .= "Disallow: /wp-comments";

   // Команда host для Яндекса
   $text .= "\nHost: " . site_url();
   return $text;
}
 

magicwd

Создатель
Регистрация
22 Июл 2016
Сообщения
25
Реакции
4
Добавил стили и запер в виджет Консоли. Код нашел в данной теме, решил просто облагородить вывод. Делал для себя и подумал, что кому нить может быть интересным.

0f3b8a1445b04122b8194750d99d23d2.jpg


Установка:

  1. Создайте файл, например: server-load-widgets.php и скопируйте в него код (под спойлером);
  2. Закиньте файл в папку на вашем сервере //адресс сайта/wp-content/plugins/;
  3. Далее, активируйте через админку, как обычный плагин;
  4. В Консоли теперь можете наблюдать данный виджет.
Скрытое содержимое доступно для зарегистрированных пользователей!
 

WiZXaK

Причиняю добро
Регистрация
8 Сен 2012
Сообщения
883
Реакции
865
Недавно пригодилось для конкретной темы - изменения вывода (количество) в ряд субкатегорий (меленькие подкатегории для Woo) - логика для примера:
PHP:
add_filter( 'shop_loop_subcategories_columns',    'ec_child_modify_subcat_columns', 20 );

function ec_child_modify_subcat_columns( $subcat_columns ) {
    $term_id = get_queried_object()->term_id;

    if ( $term_id == 54 ) {
        $subcat_columns = 6;
    }

    return $subcat_columns;
}
Где 54 - id вашей подкатегории
Где 6 - количество их в одном ряду
 
Последнее редактирование:

B2ron

Постоялец
Регистрация
7 Сен 2012
Сообщения
79
Реакции
19
Функция транслитерации в шаблоне.
При работе с некоторыми JS плагинами (например, фильтр Isotope) бывает нужно получить название именно на латинице, чтобы вставить его в класс. Вот тогда-то моя функция и пригодится.
PHP:
// ФУНКЦИЯ ТРАНСЛИТЕРАЦИИ
function rus2translit($string) {
    $converter = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',
        'г' => 'g',   'д' => 'd',   'е' => 'e',
        'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
        'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',
        'о' => 'o',   'п' => 'p',   'р' => 'r',
        'с' => 's',   'т' => 't',   'у' => 'u',
        'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
        'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
      
        'А' => 'A',   'Б' => 'B',   'В' => 'V',
        'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
        'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
        'И' => 'I',   'Й' => 'Y',   'К' => 'K',
        'Л' => 'L',   'М' => 'M',   'Н' => 'N',
        'О' => 'O',   'П' => 'P',   'Р' => 'R',
        'С' => 'S',   'Т' => 'T',   'У' => 'U',
        'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
        'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
        'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
        'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    );
    return strtr($string, $converter);
}
// ФУНКЦИЯ ПЕРЕВОДА В URL (УПРОЩЕНИЕ)
function str2url($str) {
    // переводим в транслит
    $str = rus2translit($str);
    // в нижний регистр
    $str = strtolower($str);
    // заменям все ненужное нам на "-"
    $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
    // удаляем начальные и конечные '-'
    $str = trim($str, "-");
    // заменяем двойные '--' на '-'
    $str = str_replace("--", "-", $str);
    return $str;
}

Использование
PHP:
// Допустим у вас есть название товара "Стол кухонный круглый"
$name = 'Стол кухонный круглый';
echo str2url($name); // выведет stol-kuhonnyy-kruglyy
 
Последнее редактирование:

unnell

Создатель
Регистрация
28 Июл 2013
Сообщения
15
Реакции
14
В меню. Добавление активного меню путем добавление класса "active"
PHP:
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
     if( in_array('current-menu-item', $classes) ){
             $classes[] = 'active ';
     }
     return $classes;
}
 

WiZXaK

Причиняю добро
Регистрация
8 Сен 2012
Сообщения
883
Реакции
865
Если нужно быстро скрыть атрибуты в навигационном меню
PHP:
/*** Скрыть атрибуты в меню  **/
function my_menu_notitle( $menu ){
return $menu = preg_replace('/ title=\"(.*?)\"/', '', $menu );
}
add_filter( 'wp_nav_menu', 'my_menu_notitle' );
add_filter( 'wp_page_menu', 'my_menu_notitle' );
add_filter( 'wp_list_categories', 'my_menu_notitle' );
 

B2ron

Постоялец
Регистрация
7 Сен 2012
Сообщения
79
Реакции
19
В меню. Добавление активного меню путем добавление класса "active"
PHP:
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
     if( in_array('current-menu-item', $classes) ){
             $classes[] = 'active ';
     }
     return $classes;
}
Для активного пункта меню, ведь уже имеется класс "current-menu-item" (на который вы и опираетесь), а ваш код просто добавляет его синоним "active". Не понимаю в чем смысл?
 

WiZXaK

Причиняю добро
Регистрация
8 Сен 2012
Сообщения
883
Реакции
865
Формируем favicon для всего:

1) Создаем favicon - квадратную картинку любого (большого) размера
2) загружаем картинку в Для просмотра ссылки Войди или Зарегистрируйся (выбрав Every damn size, sir!) и получаем код meta и генерацию картинок всех популярных размеров.
3) Вставляем полученный код мета в наш код:

PHP:
add_action('wp_head', 'fphp_add_favicons');
function fphp_add_favicons() {
    ?>
<!-- enter favicon meta below here -->
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="/image/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/image/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/image/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/image/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="/image/apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="/image/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="/image/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="/image/apple-touch-icon-152x152.png" />
<link rel="icon" type="/image/png" href="/image/favicon-196x196.png" sizes="196x196" />
<link rel="icon" type="/image/png" href="/image/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="/image/png" href="/image/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="/image/png" href="/image/favicon-16x16.png" sizes="16x16" />
<link rel="icon" type="/image/png" href="/image/favicon-128.png" sizes="128x128" />
<meta name="application-name" content="&nbsp;"/>
<meta name="msapplication-TileColor" content="#FFFFFF" />
<meta name="msapplication-TileImage" content="/image/mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="/image/mstile-70x70.png" />
<meta name="msapplication-square150x150logo" content="/image/mstile-150x150.png" />
<meta name="msapplication-wide310x150logo" content="/image/mstile-310x150.png" />
<meta name="msapplication-square310x310logo" content="/image/mstile-310x310.png" />
<!-- enter favicon meta above here -->
<?php
}

4) добавляем все в functionsphp.php
 
Последнее редактирование:

unnell

Создатель
Регистрация
28 Июл 2013
Сообщения
15
Реакции
14
Например есть темы со своими языками, и не хочется лесть в код и везде менять этот перевод, + в фаилы .mo (локализация) порой не хватает перевода на русский
Код:
function ra_change_translate_text_multiple( $translated ) {
    $text = array(
        'Cart' => 'Корзина2',
        'Items' => 'Товаров'
    );
    $translated = str_ireplace(  array_keys($text),  $text,  $translated );
    return $translated;
}
add_filter( 'gettext', 'ra_change_translate_text_multiple', 20 );

Работает на такие функции: translate(), __(), _e(), _n(), _x(), _ex(), _nx(), esc_attr__(), esc_attr_e(), esc_attr_x(), esc_html__(), esc_html_e(), esc_html_x(), _n_noop(), _nx_noop(), translate_nooped_plural()

Пример
__( 'Cart', 'Avada' )
Выведет: Корзина2
 
Последнее редактирование:

gls

Комбат
Регистрация
11 Янв 2007
Сообщения
588
Реакции
308
Код:
function disable_all_feeds() {
wp_redirect(get_option('siteurl'));
}
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );

add_action('do_feed', 'disable_all_feeds', 1);
add_action('do_feed_rdf', 'disable_all_feeds', 1);
add_action('do_feed_rss', 'disable_all_feeds', 1);
add_action('do_feed_rss2', 'disable_all_feeds', 1);
add_action('do_feed_atom', 'disable_all_feeds', 1);

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

Такой набор уберет почти весь мусор с <head> вставленный WP движком
Зачем повторяться, если такое есть в заголовке поста
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху