Оформление WordPress

При создании темы для сайта WordPress, нужны некоторые дополнительные функции. На странице, немало полезных функции для оформления WordPress.

Отменить авто-сохранение



function disable_autosave() 
    { wp_deregister_script('autosave'); }  
    add_action('wp_print_scripts', 'disable_autosave');


Как удалить ревизии?

Зайти в phpmyadmin выбрать базу данных выполнить SQL команду:



DELETE FROM `wp_posts` WHERE post_type='revision'


И все ревизии исчезнут.

Как правильно выбрать постоянные ссылки для WordPress?

URL не должен начинаться с /%category%/, /%tag%/, /%author%/ и /%postname%/. Можно выбрать, например, /blog/%category%/%postname%/ или /%year%/%postname%/ — этого достаточно, чтобы WordPress мог отличить адрес записи от адреса страницы, и в этом случае он не будет создавать расширенный набор правил.

Любую из тех структур, которые предлагаются по умолчанию, можно использовать без опасений.

Добавить миниатюры в категориях для рубрик

В файл loop.php перед <?php the_excerpt () ?> добавить:



<div class="thumbnail"><?php 
if  ( function_exists ("has_post_thumbnail") && has_post_thumbnail () ) 
 { 
     the_post_thumbnail (array (300,100), 
     array ("class" => "alignleft post_thumbnail")); 
} 
?>
</div>


Указать количество слов



function my_excerpt_length($length) { 
 return 65; 
 } 
 add_filter('excerpt_length', 'my_excerpt_length');


Пагинация для большой страницы

Добавить на страницу:



<!--nextpage-->


Блокировка IP адреса

Добавить в .htaccess:



<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx
allow from all
</Limit>


Закрываем доступ для спам-ботов

Добавить в .htaccess:



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>


Миниатюры в админке



if ( !function_exists('AddThumbColumn') && function_exists('add_theme_support') ) {
    // for post and page
    add_theme_support('post-thumbnails', array( 'post', 'page' ) );
    function AddThumbColumn($cols) {
        $cols['thumbnail'] = __('Thumbnail');
        return $cols;
    }
    function AddThumbValue($column_name, $post_id) {
            $width = (int) 125;
            $height = (int) 72;
            if ( 'thumbnail' == $column_name ) {
                // thumbnail of WP 2.9
                $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
                // image from gallery
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
                    }
                }
                    if ( isset($thumb) && $thumb ) {
                        echo $thumb;
                    } else {
                        echo __('None');
                    }
            }
    }
    // for posts
    add_filter( 'manage_posts_columns', 'AddThumbColumn' );
    add_action( 'manage_posts_custom_column', 'AddThumbValue', 10, 2 );
    // for pages
    add_filter( 'manage_pages_columns', 'AddThumbColumn' );
    add_action( 'manage_pages_custom_column', 'AddThumbValue', 10, 2 );
}


Миниатюры в rss



function uawp_rss_post_thumbnail($content) { /** Миниатюры в rss*/
global $post;
if ( has_post_thumbnail( $post->ID ) ){
$content = '' . get_the_post_thumbnail( $post->ID, 'full', array( 'style' => 'float: left; margin: .7em;' ) ) . '' . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'uawp_rss_post_thumbnail');
add_filter('the_content_feed', 'uawp_rss_post_thumbnail');


Кнопка для виджета от Facebook



<div id="fb-root"></div>
<script src=
http://www.pixelcom.crimea.ua/"http://connect.facebook.net/ru_RU/all.js#xfbml=1"></script>
<fb:like href=
http://www.pixelcom.crimea.ua/"<?php echo get_permalink(); ?>" data-send="false" data-layout="button_count" data-width="50" data-show-faces="true" data-action="recommend" data-font="verdana"></fb:like>


Изменить: Читать далее



function new_excerpt_more($text) { 
   return ' [...]';   
   } 
   add_filter('excerpt_more', 'new_excerpt_more');


Удалить: #more из URL



function remove_more_jump_link($link)  /** отмена #more в URL */
 {
  $offset = strpos($link, '#more-');
   if ($offset)
    {
     $end = strpos($link, '"',$offset);
    }
   if ($end)
    {
     $link = substr_replace($link, '', $offset, $end-$offset);
    }
  return $link;
 }
add_filter('the_content_more_link', 'remove_more_jump_link');


Фильтры для текстового редактора



remove_filter('the_content', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_content', 'wpautop');


Очистка от лишних тегов в header



function clean_wp_header() { 
        remove_action('wp_head', 'wp_generator'); 
        remove_action('wp_head', 'rel_canonical'); 
        remove_action('wp_head', 'rsd_link'); 
        remove_action('wp_head', 'feed_links',2); 
        remove_action('wp_head', 'feed_links_extra',3); 
        remove_action('wp_head', 'wlwmanifest_link'); 
        remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0); 
        remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); 
} 

add_action('init', 'clean_wp_header');


Стиль для первого параграфа



function first_paragraph($content){ 
  global $post;   
  if ($post->post_type == "post") { 
  return preg_replace('/<p([^>]+)?>/', '<p$1 class="first">', $content, 1); } 
  else { return $content; } 
} 

add_filter('the_content', 'first_paragraph');


Добавить к профилю соц-сети



function cusom_social_contact_links($contacts) {
 // Adding 
 $contacts['facebook'] = 'Facebook'; 
 $contacts['youtube'] = 'YouTube'; 
 $contacts['dribbble'] = 'Dribbble';   
 // Removing unset
 ($contacts['yim']); unset
 ($contacts['aim']); unset
 ($contacts['jabber']);   
  return $contacts; } 

 add_filter('user_contactmethods','cusom_social_contact_links', 10, 1);


Настройки меню администратора



function full_admin_settings_links() {
  add_options_page(__('All Settings'), __('All Settings'), 
  'administrator', 'options.php'); } 

  add_action('admin_menu', 'full_admin_settings_links');


Удалить атрибуты изображения, ширину и высоту



function remove_image_size_atts($html) { 
     $html = preg_replace('/(width|height)=\"\d*\"\s/', "", $html); 
     return $html; } 

     add_filter('post_thumbnail_html', 'remove_image_size_atts', 10); 
     add_filter('image_send_to_editor', 'remove_image_size_atts', 10);


Скрыть сообщение об обновлениях от пользователей



global $user_login; get_currentuserinfo(); 
      if(!current_user_can('update_plugins')) { 
      add_action('init', create_function('$a', 
      "remove_action('init', 'wp_version_check');" ), 2); 

      add_filter('pre_option_update_core', create_function('$a', "return null;"));


Удаление мета тегов из header для постов и страниц



function remove_default_post_metatags() { 
        remove_meta_box('postcustom','post','normal'); 
        remove_meta_box('postexcerpt','post','normal'); 
        remove_meta_box('commentstatusdiv','post','normal'); 
        remove_meta_box('trackbacksdiv','post','normal'); 
        remove_meta_box('slugdiv','post','normal'); 
        remove_meta_box('authordiv','post','normal'); } 

    add_action('admin_menu','remove_default_post_metatags');  

function remove_default_page_metatags() { 
       remove_meta_box('postcustom','page','normal'); 
       remove_meta_box('postexcerpt','page','normal'); 
       remove_meta_box('commentstatusdiv','page','normal'); 
       remove_meta_box('trackbacksdiv','page','normal'); 
       remove_meta_box('slugdiv','page','normal'); 
       remove_meta_box('authordiv','page','normal'); }

    add_action('admin_menu','remove_default_page_metatags');


Покажет на дне количество запросов к базе данных



function footer_stats_display($visible = false) { 
$stat = sprintf( '%d запросов за %.3f секунд, использовано памяти %.2fMB', 

get_num_queries(), timer_stop( 0, 3 ),
memory_get_peak_usage() / 1024 / 1024);   
echo $visible ? $stat : ">!-- {$stat} -->" ; } 

add_action('wp_footer', 'footer_stats_display', 20);


Подробности заголовка шаблона



function display_template_name() { 
    global $template; print_r($template); } 
    add_action('wp_head', 'display_template_name');


Настройка админки Page Footer



function custom_admin_footer() { 
echo 'add your custom footer text and html here'; } 

add_filter('admin_footer_text', 'custom_admin_footer');


Резкость изображения JPEG Resized



function sharpen_resized_jpeg_images($resized_file) { 
        $image = wp_load_image($resized_file);   
        if(!is_resource($image)) 
        return new WP_Error('error_loading_image', $image, $file);   
        $size = @getimagesize($resized_file); 
        if(!$size) 
        return new WP_Error('invalid_image', __('Could not read image size'), $file);   
        list($orig_w, $orig_h, $orig_type) = $size;   
        switch($orig_type) { 
        case IMAGETYPE_JPEG: $matrix = array( array(-1, -1, -1), 
        array(-1, 16, -1), array(-1, -1, -1), );   
        $divisor = array_sum(array_map('array_sum', $matrix)); 
        $offset = 0;   
        imageconvolution($image, $matrix, $divisor, $offset); 
        imagejpeg($image, $resized_file,
        apply_filters('jpeg_quality', 90, 'edit_image')); 
        break; case IMAGETYPE_PNG: return $resized_file; 
        case IMAGETYPE_GIF: return $resized_file; }   
        return $resized_file; } 

     add_filter('image_make_intermediate_size', 'sharpen_resized_jpeg_images', 900);


Удалить колонку «Комментарии» в Админке



function remove_comments_column($defaults) {
    unset($defaults['comments']);
    return $defaults;
}

add_filter('manage_pages_columns', 'remove_comments_column');


Поиск в панели администратора



function wp_codex_search_form() { 
        echo '<form target="_blank" 
        method="get" action="http://wordpress.org/search/do-search.php" 
        class="alignright" style="margin: 11px 5px 0;"> 
        <input type="text" 
        onblur="this.value=(this.value==\'\') ? \'Search the Codex\' : 
        this.value;" onfocus="this.value=(this.value==\'Search the Codex\') ? \'\' : 
        this.value;" maxlength="150" value="Search the Codex" name="search" class="text">
        <input type="submit" value="Go" class="button" /> </form>'; }

   add_filter('in_admin_header', 'wp_codex_search_form', 11);


TinyURL Shortcode тегов



function custom_tinyurl_shortcode($atts){ 
     extract(shortcode_atts(array( 'url' => get_permalink(), 'title' => '' ), $atts)); 
     if(!$title) $title = $url;   
     if(false === ($cache = get_transient('tinyurl_'+md5($url)))): 
     $cache = wp_remote_retrieve_body(
     wp_remote_get('http://tinyurl.com/api-create.php?url='.$url)); 
     // cached for 24 hours set_transient('tinyurl_'+md5($url), 
     $cache, 60*60*24); endif;   
     return '<a href=
http://www.pixelcom.crimea.ua/"'.esc_url($cache).'"> '.esc_attr($title).'</a>'; } 

 add_shortcode('tinyurl', 'custom_tinyurl_shortcode');


Поиск и замена в базе данных



UPDATE wp_posts SET `post_content`
= REPLACE (`post_content`,
'Найти текст',
'Заменить этим');


Отмена авто параграфа для нужной страницы



function no_wpautop_single($content) { /** отмена для редактора */
    global $post;
    if (is_single( array(5136,3820))){
        remove_filter( 'the_content', 'wpautop' );
        return $content;
    } else {
        return $content;
    }
}
add_filter('the_content', 'no_wpautop_single', 9);


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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML -теги и атрибуты: <a href= http://www.pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>