[Инфо] Плюшки файла functions.PHP от 24 ноября 2016 для Wordpress: 4.7 и выше

Тема в разделе "Wordpress", создана пользователем DzSoft, 12 авг 2017.

Информация :
Все пользователи Nulled-а обязаны ознакомиться с основными правилами форума!
Правила: Правила форума
Правила раздела: ОБЩИЕ СВЕДЕНИЯ | Правила раздела | Правила оформления [​IMG]
Полезное: Раскодирование шаблонов | Шорткоды | Поиск плагинов | [​IMG] Складчины
Плюшки: functions.PHP - часть 1 | часть 2
Разделы WP: Шаблоны | CodeCanyon
Модераторы: ponoroshca
  1. DzSoft

    DzSoft 3T

    Регистр.:
    13 сен 2007
    Сообщения:
    350
    Симпатии:
    241
    Думаю старые функции уже можно закрывать. Ибо, что-то не работает уже с изменением и усовершенствованием WordPress (хорошо сказал :D).
    Не много правил:
    Тут выкладываются только плюшки
    ВНИМАНИЕ!
    все обсуждения, вопросы будут удалены и расценены, как спам.
    БАН ДАЮ БЕЗ ПРЕДУПРЕЖДЕНИЯ СОГЛАСНО ПРАВИЛАМ ФОРУМА
    Приступим.
     
    Последнее редактирование: 12 авг 2017
    metal-stroi-komplekt нравится это.
  2. DzSoft

    DzSoft 3T

    Регистр.:
    13 сен 2007
    Сообщения:
    350
    Симпатии:
    241
    Я долго искал/выбирал решение, как освободить/сэкономить место на хостинге при парсинге/создание новостей
    и вот решение:


    Отключаем создание ненужных превью картинок в WordPress


    1 выясняем какие картинки создаются у нас при создании/парсинге новостей

    PHP:
    <?
    /**
    * Получает информацию обо всех зарегистрированных размерах картинок.
    *
    * @global $_wp_additional_image_sizes
    * @uses   get_intermediate_image_sizes()
    *
    * @param  boolean [$unset_disabled = true] Удалить из списка размеры с 0 высотой и шириной?
    * @return array Данные всех размеров.
    */
    function get_image_sizes$unset_disabled true ) {
        
    $wais = & $GLOBALS['_wp_additional_image_sizes'];

        
    $sizes = array();

        foreach ( 
    get_intermediate_image_sizes() as $_size ) {
            if ( 
    in_array$_size, array('thumbnail''medium''medium_large''large') ) ) {
                
    $sizes$_size ] = array(
                    
    'width'  => get_option"{$_size}_size_w" ),
                    
    'height' => get_option"{$_size}_size_h" ),
                    
    'crop'   => (bool) get_option"{$_size}_crop" ),
                );
            }
            elseif ( isset( 
    $wais[$_size] ) ) {
                
    $sizes$_size ] = array(
                    
    'width'  => $wais$_size ]['width'],
                    
    'height' => $wais$_size ]['height'],
                    
    'crop'   => $wais$_size ]['crop'],
                );
            }

            
    // size registered, but has 0 width and height
            
    if( $unset_disabled && ($sizes$_size ]['width'] == 0) && ($sizes$_size ]['height'] == 0) )
                unset( 
    $sizes$_size ] );
        }

        return 
    $sizes;
    }

    die( 
    print_rget_image_sizes() ) );
    ?>
    Теперь зайдите на сайт и вы увидите такой массив:

    2. открываем functions.php и вставляем туда код.
    PHP:
    ## отключаем создание миниатюр файлов для указанных размеров
    add_filter'intermediate_image_sizes''delete_intermediate_image_sizes' );
    function 
    delete_intermediate_image_sizes$sizes ){
        
    // размеры которые нужно удалить
        
    return array_diff$sizes, array(
            
    'thumbnail',
            
    'medium',
            
    'medium_large',
            
    'large',
            
    'shop_thumbnail',
            
    'shop_catalog',
            
    'shop_single',
            
    'pw-page-box',
            
    'pw-inline',
            
    'pw-latest-news',
        ) );
    }
    }

    Класс... теперь у вас не будут создаваться ненужные миниатюры.

    И самое сочное: Плагин (не используйте плагин без выше указанного кода, а то потрёт всё)
    Если вы вносите изменения на уже рабочем сайте с загруженными картинками. То можно воспользоваться плагином Force Regenerate Thumbnails, чтобы удалить все копии и оставить только оригиналы и создать копии заново, на основе новых настроек.
    [​IMG]
    Как видно на скрине размеры которые были заявлены в functions.php не создаются, а удаляются.
    в конце всей операции выдаст сообщение:
    p.s.: В моём случаи я выиграл 2,5 ГБ :)
     
    Последнее редактирование: 13 авг 2017
    instrumenti-nn, domens и Dmytro_ua нравится это.
  3. DzSoft

    DzSoft 3T

    Регистр.:
    13 сен 2007
    Сообщения:
    350
    Симпатии:
    241
    Задался вопросом о том, что когда приходит письмо через плагин CF7 отправитель является wordpress@mysite.ru
    Порылся в интернете, нашёл занятное решение.

    Изменить данное поведение движка можно, добавив следующий код в файл functions.php вашей темы:

    PHP:
    //изменение имени и email писем start
    function change_fromemail($email){return 'noreply@mysite.ru';}
    function 
    change_fromname($name){return 'New name';}
    add_filter('wp_mail_from''change_fromemail');
    add_filter('wp_mail_from_name''change_fromname');
    //изменение имени и email писем end
    Где "New name" это имя, а "noreply@mysite.ru" это email.
     
    otkambinok, Serji0 и Panadina нравится это.
  4. aniche42

    aniche42 Писатель

    Регистр.:
    12 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Вот недавно заметил, что когда создаешь sidebar, и в него вставляешь пустой Текстовый Виджет, например с номером телефона, wp добавляет много лишних пробелов (<a href:"tel: 555-555 "> 555-555 </a>), поэтому использую такую функцию

    PHP:
    function clean_widget($widget_name){
        
    ob_start();
        
    dynamic_sidebar($widget_name);
        
    $out ob_get_contents();
        
    ob_end_clean();
        
    $clean_text_without_backspaces=trim($out);
        echo 
    $clean_text_without_backspaces;
    }
    а выводится sidebar без пробелов примерно таким образом
    PHP:
    <?php echo clean_widget('phone'); ?>
     
    Последнее редактирование модератором: 21 авг 2017
  5. areshin71

    areshin71 Постоялец

    Регистр.:
    19 сен 2015
    Сообщения:
    65
    Симпатии:
    14
    Выводим описание категорий woocommerce на всех страницах пагинации
    Добавить в functions.php

    PHP:
    /* Display WooCommerce product category description on all category archive pages */

    function my_theme_woocommerce_taxonomy_archive_description() {
      if ( 
    is_tax( array( 'product_cat''product_tag' ) ) && get_query_var'paged' ) != ) {
      
    $description wc_format_contentterm_description() );
      if ( 
    $description ) {
      echo 
    '<div class="term-description">' $description '</div>';
      }
      }
    }
    add_action'woocommerce_archive_description''my_theme_woocommerce_taxonomy_archive_description');
     
    Последнее редактирование модератором: 19 сен 2017
  6. betam

    betam Создатель

    Регистр.:
    4 окт 2017
    Сообщения:
    31
    Симпатии:
    11
    Чтобы на странице checkout спрятать лишние поля, не обязательно ставить плагины, достаточно добавить в functions.php
    PHP:
    add_filter('woocommerce_checkout_fields','bp_rename_field');
    function 
    bp_rename_field ($fields){
        unset(
    $fields['billing']['billing_first_name']);
            unset(
    $fields['billing']['billing_last_name']);
            unset(
    $fields['billing']['billing_company']);
            unset(
    $fields['billing']['billing_address_1']);
            unset(
    $fields['billing']['billing_address_2']);
            unset(
    $fields['billing']['billing_city']);
            unset(
    $fields['billing']['billing_postcode']);
            unset(
    $fields['billing']['billing_country']);
            unset(
    $fields['billing']['billing_state']);
            unset(
    $fields['billing']['billing_phone']);
            unset(
    $fields['order']['order_comments']);
            unset(
    $fields['billing']['billing_email']);
            unset(
    $fields['account']['account_username']);
            unset(
    $fields['account']['account_password']);
            unset(
    $fields['account']['account_password-2']);


        return 
    $fields;
    }
    То что нужно оставить, комментируем или удаляем
     
    нарада нравится это.
  7. betam

    betam Создатель

    Регистр.:
    4 окт 2017
    Сообщения:
    31
    Симпатии:
    11
    А еще вместо плагинов типа Cyr-to-Lat (если заголовок написан кириллицей, то и путь(slug) получается кириллицей. Данная функция заменяет в пути кириллицу на латиницу) я делаю так:
    добавить в functions.php
    PHP:
    function rutranslit($title) {
        
    $chars = array(
    //rus
            
    "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
            
    "Е"=>"E","Ё"=>"YO","Ж"=>"ZH",
            
    "З"=>"Z","И"=>"I","Й"=>"Y","К"=>"K","Л"=>"L",
            
    "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
            
    "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
            
    "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"",
            
    "Ы"=>"Y","Ь"=>"","Э"=>"YE","Ю"=>"YU","Я"=>"YA",
            
    "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
            
    "е"=>"e","ё"=>"yo","ж"=>"zh",
            
    "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
            
    "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
            
    "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
            
    "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
            
    "ы"=>"y","ь"=>"","э"=>"ye","ю"=>"yu","я"=>"ya",
    //spec
            
    "—"=>"-","«"=>"","»"=>"","…"=>"","№"=>"N",
            
    "—"=>"-","«"=>"","»"=>"","…"=>"",
            
    "!"=>"","@"=>"","#"=>"","$"=>"","%"=>"","^"=>"","&"=>"",
    //ukr
            
    "Ї"=>"Yi","ї"=>"i","Ґ"=>"G","ґ"=>"g",
            
    "Є"=>"Ye","є"=>"ie","І"=>"I","і"=>"i",
    //kazakh
            //"Ә"=>"A","Ғ"=>"G","Қ"=>"K","Ң"=>"N","Ө"=>"O","Ұ"=>"U","Ү"=>"U","H"=>"H",
            //"ә"=>"a","ғ"=>"g","қ"=>"k","ң"=>"n","ө"=>"o", "ұ"=>"u","h"=>"h"
        
    );

            if (
    seems_utf8($title)) $title urldecode($title);
            
    $title preg_replace('/\.+/','.',$title);
            
    $r strtr($title$chars);
            return 
    $r;
        }
        
    add_filter('sanitize_file_name','rutranslit');
        
    add_filter('sanitize_title','rutranslit');
    <-------------- добавлено через 495 сек. -------------->
    Ну и еще простой способ добавить кнопку "Поделиться" не прибегая к плагинам
    PHP:
    add_filter'the_content''grpd_post_sharing' );
    function 
    grpd_post_sharing($content) {
        
    $yashare '<script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script>
        <script src="//yastatic.net/share2/share.js"></script>
        <div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir,gplus,twitter,evernote,pocket,viber,whatsapp,skype,telegram" data-counter=""></div>'
    ;
        if (
    is_single())
            return 
    $content $yashare// если нужно выводить кнопки в начале, поменяйте 2 переменные местами
            
    else return $content// проверка для остальных типов страниц
     
    Последнее редактирование: 14 окт 2017
  8. DzSoft

    DzSoft 3T

    Регистр.:
    13 сен 2007
    Сообщения:
    350
    Симпатии:
    241
    Как убрать сплит сообщение. Я воспользовался таким костылём
    1 определил class данного сплит сообщения у меня это .error, .settings-error.
    Все сплит сообщения у меня скрыты и не раздражают.
    PHP:
    function del_upgrade_nag() {
            echo 
    '<style type="text/css">
                            .error, .settings-error {display: none}
                        </style>'
    ;
    }
    add_action('admin_head''del_upgrade_nag');
     
  9. andmak

    andmak Создатель

    Регистр.:
    13 июн 2010
    Сообщения:
    10
    Симпатии:
    0
    Не всегда новомодные фишки :dead: нужны использую для полого отключения Emoji дзей

    PHP:
        add_action('after_setup_theme''start_cleanup');
    endif;
    /**
    * Clean up head.+
    * ----------------------------------------------------------------------------
    */

    if (!function_exists('cleanup_head')) :
        function 
    cleanup_head()
        {

            
    /**
             * Disable Emoji
             */
                
    remove_action'wp_head''print_emoji_detection_script');
                
    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();
                    }
                }

        }
    endif;
     
  10. X78wh-i80

    X78wh-i80 Создатель

    Регистр.:
    15 фев 2018
    Сообщения:
    12
    Симпатии:
    10
    Небольшая функция для перенаправления поиска на другой сайт (т.е. вводите поисковый запрос на своем сайте,а функция перебрасывает вас на указанный в функции сайт(http://example-точка-com/search/пример-запроса) и выдает результат по запросу).
    PHP:
    function custom_redirect_search() {
        if (
    is_search() && !empty($_GET['s'])) {
            
    wp_redirect('http://example-точка-com'.("/search/").urlencode(get_query_var('s')));
            exit();
        }
    }
    add_action('template_redirect''custom_redirect_search' );