[Инфо] Wordpress: плюшки файла functions.PHP ))

Тема в разделе "Wordpress", создана пользователем Красавчег, 10 окт 2012.

Модераторы: DzSoft, Sorcus
  1. Красавчег

    Красавчег Завсегдатай

    Регистр.:
    15 мар 2010
    Сообщения:
    902
    Симпатии:
    298
    Собственно, при разработке шаблонов для Wordpress и сайтов на этой CMS собираются своеобразные плюшки, которые потом часто используются. Решил поделиться. Думаю для новичков это будет полезно, да и сам)) не забуду и не потеряю. Все коды вставляются в файл functions.php в папке установленной темы.

    Итак, что у нас сегодня:

    1. Удаляем всякую байду из хедера страницы, типа версии вашего вордпресса, дополнительных ссылок на RSS, ссылок для всяких сервисов типа Really Simple Discovery, программ Windows Live Writer и т.п. чепуху, которая нам не нужна и использоваться не будет.
    # удаляем всякую байду из head страницы
    remove_action( 'wp_head', 'feed_links_extra', 3 );
    remove_action( 'wp_head', 'feed_links', 2 );
    remove_action( 'wp_head', 'rsd_link' );
    remove_action( 'wp_head', 'wlwmanifest_link' );
    remove_action( 'wp_head', 'index_rel_link' );
    remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
    remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
    remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
    remove_action( 'wp_head', 'wp_generator' );


    2. Удаляем всплывающие подсказки (тег title="") типа: "Просмотреть все записи в рубрике…" из ссылок на категории и теги. Выглядят они достаточно глупо, особенно если мы делаем не блог, а например корпоративный сайт, портфолио и т.п.
    # удаляем title из ссылок категорий и тегов
    function removeTitle($str){
    $str = preg_replace("/title=\".*\"/", '', $str);
    return $str;
    }
    add_filter("wp_list_categories", "removeTitle");
    add_filter("wp_list_pages", "removeTitle");
    add_filter("the_category", "removeTitle");


    3. Удаляем все HTML теги из комментариев, пусть любители) втиснуть ссылку в комментарий отдохнут. Кстати, в интернете широко известен другой способ, но он html-код не удаляет, а тупо делает его в комментариях простым текстом. Меня это не прикалывает, этот вариант - удаляет все теги полностью.
    // удаляем HTML в комментариях при их добавлении.
    function preprocess_comment_striptags($commentdata) {
    $commentdata['comment_content'] = strip_tags($commentdata['comment_content']);
    return $commentdata;
    }
    add_filter('preprocess_comment', 'preprocess_comment_striptags');

    // удаляем HTML в комментариях при показе, если на сайте уже есть комменты с ссылками и т.п.
    function comment_text_striptags($string) {
    return strip_tags($string);
    }
    add_filter('comment_text', 'comment_text_striptags');
     
    mischael1, Vitaliik, PapiDi и 13 другим нравится это.
  2. Miron4ik

    Miron4ik

    Регистр.:
    16 сен 2012
    Сообщения:
    157
    Симпатии:
    82
    Это не позволит добавлять ссылки в комментарии, каким образом это вообще будет происходить?
    И это уберет все стили текста применяемые с помощью HTML?
     
    Vitaliik нравится это.
  3. Красавчег

    Красавчег Завсегдатай

    Регистр.:
    15 мар 2010
    Сообщения:
    902
    Симпатии:
    298
    Все HTML теги из комментариев удаляются.

    Да.
     
    Vitaliik, adward и Miron4ik нравится это.
  4. Wolfserker

    Wolfserker Постоялец

    Регистр.:
    23 май 2012
    Сообщения:
    141
    Симпатии:
    78
    думаю к отключаемой байде можно добавить еще такой элемент
    PHP:
    remove_action'wp_head','wp_shortlink_wp_head'10);
     
    Vitaliik, dmitrypro, spyplane и 2 другим нравится это.
  5. bravilor

    bravilor

    Регистр.:
    25 июл 2007
    Сообщения:
    438
    Симпатии:
    155
    А как удалить <link rel='prev' и <link rel='next'?
     
    Vitaliik и Wolfserker нравится это.
  6. Wolfserker

    Wolfserker Постоялец

    Регистр.:
    23 май 2012
    Сообщения:
    141
    Симпатии:
    78
    не уверен на 100% , но попробуй
    PHP:
    remove_action('wp_print_styles''pagenavi_stylesheets');
     
  7. bravilor

    bravilor

    Регистр.:
    25 июл 2007
    Сообщения:
    438
    Симпатии:
    155
    Не работают эти две строки
    Код:
    remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); // prev link
    remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); // start link
    
    <link rel='prev' и <link rel='next' все равно выводятся

    Разобрался, теперь эти две строки заменяет одна, зашел в wp-includes/default_filters.php, и закоментил одну строку
    Код:
    add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
    Либо, как я понял, зайти в функцию темы и прописать
    Код:
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
     
    TiranoZubr нравится это.
  8. a7ex

    a7ex Постоялец

    Регистр.:
    5 сен 2012
    Сообщения:
    78
    Симпатии:
    23
    Достаточно этого
    remove_action( ‘wp_head’, ‘feed_links_extra’, 3 );

    remove_action( ‘wp_head’, ‘feed_links’, 2 );

    remove_action( ‘wp_head’, ‘rsd_link’ );

    remove_action( ‘wp_head’, ‘wlwmanifest_link’ );

    remove_action( ‘wp_head’, ‘index_rel_link’ );

    remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 );

    remove_action( ‘wp_head’, ‘start_post_rel_link’, 10, 0 );

    remove_action( ‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0 );

    remove_action( ‘wp_head’, ‘wp_generator’ );
     
  9. Красавчег

    Красавчег Завсегдатай

    Регистр.:
    15 мар 2010
    Сообщения:
    902
    Симпатии:
    298
    Новая партия)) плюшек:

    4. Убираем дурацкие символы [...] в конце кратких анонсов на главной, категориях, архивах, результатах поиска и т.п. (к слову, такие киксы даже у флагманов http://ru.wordpress.org/ - прокрутить страницу вниз.) Собственно, мы их не просто убиваем, а меняем на симпатичную ссылку "читать далее.."
    # удаляем дурацкие символы в конце кратких анонсов
    function new_excerpt_more($more) {
    global $post;
    return ' <a href="'. get_permalink($post->ID) . '">читать далее..</a>';
    }
    add_filter('excerpt_more', 'new_excerpt_more');


    5. При навешивании кучи плагинов и прочих свистелок & перделок, хорошо бы видеть, сколько времени занимает генерация страницы, а так же сколько при этом было запросов в базу и использовано памяти. Этот код выводит в футере страницы инфу о времени генерации, запросах и потреблении памяти.
    # выводим время генерации, запросы и потребление памяти
    function usage(){
    printf( ('SQL запросов:%d. Время генерации:%s сек. Потребление памяти:'), get_num_queries(), timer_stop(0, 3) );
    if ( function_exists('memory_get_usage') ) echo round( memory_get_usage()/1024/1024, 2 ) . ' mb ';
    }
    add_filter('admin_footer_text', 'usage');
    add_filter('wp_footer', 'usage');


    6. Удаляем поле "сайт" из формы комментариев. Еще один гвоздик в гроб любителей тискануть ссылку на свой гс. Да я и сам)) хоть и очень редко где-то что-то комментирую, но увидев поле "ваш сайт", как говорится, трудно пройти)) мимо. Так что убираем, нафиг, это искушение:
    # удаляем поле сайт из формы комментариев
    function remove_comment_fields($fields) {
    unset($fields['url']);
    return $fields;
    }
    add_filter('comment_form_default_fields', 'remove_comment_fields');
     
    Didi, Varrcan, ceramin и 2 другим нравится это.
  10. levati

    levati Постоялец

    Регистр.:
    2 апр 2007
    Сообщения:
    104
    Симпатии:
    22
    В плюшки от меня:
    Удаление конструкции
    HTML:
    <p><span id="more..."></span></p>
    из полной статьи.
    В живом виде проявляется в качестве уродливого отступа.
    Фиксим:
    PHP:
    <?php
    function no_more($content) {
    if ( !
    is_feed() && !is_page() && !is_home() && !is_search() && !is_archive() && !is_author() && !is_category() && !is_paged())
    $content preg_replace('(<p><span id=\"more[^>]*></span></p>)'''$content);
    return 
    $content;
    }
    add_filter('the_content''no_more'500);
    ?>
     
    Didi, kuzovbmw, alikk и ещё 1-му нравится это.