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

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

Красавчег

Завсегдатай
Регистрация
15 Мар 2010
Сообщения
906
Реакции
313
Собственно, при разработке шаблонов для 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' );
[/spoil]

2. Удаляем всплывающие подсказки (тег title="") типа: "Просмотреть все записи в рубрике…" из ссылок на категории и теги. Выглядят они достаточно глупо, особенно если мы делаем не блог, а например корпоративный сайт, портфолио и т.п.
[spoil]# удаляем 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");[/spoil]

3. Удаляем все HTML теги из комментариев, пусть любители) втиснуть ссылку в комментарий отдохнут. Кстати, в интернете широко известен другой способ, но он html-код не удаляет, а тупо делает его в комментариях простым текстом. Меня это не прикалывает, этот вариант - удаляет все теги полностью.
[spoil]// удаляем 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');
 

Красавчег

Завсегдатай
Регистрация
15 Мар 2010
Сообщения
906
Реакции
313
Новая партия)) плюшек:

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

5. При навешивании кучи плагинов и прочих свистелок & перделок, хорошо бы видеть, сколько времени занимает генерация страницы, а так же сколько при этом было запросов в базу и использовано памяти. Этот код выводит в футере страницы инфу о времени генерации, запросах и потреблении памяти.
[spoil]# выводим время генерации, запросы и потребление памяти
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');
[/spoil]

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

levati

Постоялец
Регистрация
2 Апр 2007
Сообщения
99
Реакции
40
В плюшки от меня:
Удаление конструкции
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);
?>
 

9139530

Писатель
Регистрация
11 Авг 2011
Сообщения
4
Реакции
1
Если вам нужно скрыть некоторые рубрики из вывода на главной
PHP:
//Не выводить определенные Рубрики на главной странице сайта!
function exclude_category($query) {
if ( $query->is_home ) {
$query->set('category__not_in', array(81,83,82,85));}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

Где, в моём случае 81,83,82,85 - это ID тех рубрик которые нужно скрыть. думаю как определить Id все знают))
 

Soul.Web

Писатель
Регистрация
24 Ноя 2012
Сообщения
1
Реакции
5
Немного плюшек, которые использую. (найдено на просторах интернета)

PHP:
// Отключение обновления темы
remove_action('load-update-core.php','wp_update_themes');
add_filter('pre_site_transient_update_themes',create_function('$a', "return null;"));
wp_clear_scheduled_hook('wp_update_themes');

// Отключение обновления плагинов
remove_action( 'load-plugins.php', 'wp_update_plugins' );
remove_action( 'load-update.php', 'wp_update_plugins' );
remove_action( 'admin_init', '_maybe_update_plugins' );
remove_action( 'wp_update_plugins', 'wp_update_plugins' );
add_filter( 'pre_transient_update_plugins', create_function( '$a',
"return null;" ) );

// Отключение обновления движка
remove_action( 'wp_version_check', 'wp_version_check' );
remove_action( 'admin_init', '_maybe_update_core' );
add_filter( 'pre_transient_update_core', create_function( '$a',
"return null;" ) );

// Убираем meta generator
remove_action('wp_head', 'wp_generator');

// Отключаем RSS
function fb_disable_feed() {
wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}
add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);


// Удаляем лишние теги
remove_filter( ‘the_content’, ‘wpautop’ );
remove_filter( ‘the_excerpt’, ‘wpautop’ );

// Избавляемся от ver в css/js
function remove_cssjs_ver( $src ) {
    if( strpos( $src, '?ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );
 

xbreaker

Вверх ногами
Регистрация
15 Авг 2007
Сообщения
227
Реакции
54
Немного плюшек, которые использую. (найдено на просторах интернета)
PHP:
// Удаляем лишние теги
remove_filter( ‘the_content’, ‘wpautop’ );
remove_filter( ‘the_excerpt’, ‘wpautop’ );
Слишком радикально, по мне - лучше всего использовать ВП Типограф, хотя бы Лайт - он отключит автоР и сам выпилит теги P, там где они не нужны (ох уж эти <p></p>) и оставит их там где они должны быть.

Выпиливаем админ бар у всех пользователей:
PHP:
function disable_admin_bar() {
    add_filter( 'show_admin_bar', '__return_false' );
    add_action( 'admin_print_scripts-profile.php',
        'hide_admin_bar_settings' );
}
add_action( 'init', 'disable_admin_bar' , 9 );

В добавок к выше указанному удалению категории с главной, удаляем любую категорию из фида, где 1 - номер категории:
PHP:
function filter_feed_cat($query) {
if ($query->is_feed) {
$query->set('cat','-1');
}
return $query;
}
add_filter('pre_get_posts','filter_feed_cat');

Вообще, используя Conditional tags можно исключить любую запись или категорию, навешивая фильтр на pre_get_posts, по аналогии с is_feed.
 

Avrora

Гуру форума
Регистрация
12 Фев 2010
Сообщения
104
Реакции
86
Редирект результатов поиска с /?s=query на /search/query/ и редирект на главную если параметр поиска empty
PHP:
//Редирект результатов поиска с /?s=query на /search/query/, конвертация %20% на +
function nice_search_redirect() {
  global $wp_rewrite;
  if (!isset($wp_rewrite) || !is_object($wp_rewrite) || !$wp_rewrite->using_permalinks()) {
    return;
  }

  $search_base = $wp_rewrite->search_base;
  if (is_search() && !is_admin() && strpos($_SERVER['REQUEST_URI'], "/{$search_base}/") === false) {
    wp_redirect(home_url("/{$search_base}/" . urlencode(get_query_var('s'))));
    exit();
  }
}

if (current_theme_supports('nice-search')) {
  add_action('template_redirect', 'nice_search_redirect');
}

//Редирект на главную если параметр поиска empty
function request_filter($query_vars) {
  if (isset($_GET['s']) && empty($_GET['s'])) {
    $query_vars['s'] = ' ';
  }

  return $query_vars;
}

add_filter('request', 'request_filter');
 

felix0808

Создатель
Регистрация
19 Янв 2013
Сообщения
16
Реакции
0
народ а как удалить граватар, чтобы WP к нему не обращался?
установил page speed и там один из пунктов
Если возможно , удалите цепь переадресаций
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
я этими граватарами не пользуюсь, коменты запрещены
а как выглядит обращение к этому граватару хз
вроде закоментил единственную подозрительную строку
<?php //echo get_avatar( $comment, 40 ); ?>
но он один фиг на главной и в записях к граватару обращается
 

Avrora

Гуру форума
Регистрация
12 Фев 2010
Сообщения
104
Реакции
86
народ а как удалить граватар, чтобы WP к нему не обращался?
Идем в админку WP. Параметры > Обсуждение > Не показывать аватары
7a42574655f50515606a57797d99d6d2.png
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху