Snippety – malí velcí pomocníci

0

Malé kousky kódu, rozšiřující funkčnost WordPress . Tak by se jednou větou daly charakterizovat snippety. Že tento úkol plní i moduly? Jistě, svojí povahou jsou velmi podobné, o jedinečnosti snippetů však rozhodují dva zásadní faktory: nevyžadují instalaci a díky minimálnímu objemu nezatěžují server.

Jak pracovat s WordPress snippety?

Nejběžnější lokalitou pro uložení snippetů je soubor functions.php v aktivním tématu, stejně užitečné mohou být při globálním použití v rámci souboru wp-config.php. Stačí otevřít textový editor a přidat příslušný kód do těchto souborů. Jistou nevýhodou ručního vkládání snippetů je jejich propojení s právě aktivovaným tématem kromě výše uvedené výjimky s wp-config.php.

Řešením je modul Code Snippets , který působí systémově a v pohodlí administračního prostředí nabízí kromě obligátního přidávání, úpravy, vymazávání vlastních kódů také jejich zálohu prostřednictvím XML souboru. Jednotlivé snippety lze aktivovat a vypínat dle potřeby, Code Snippets je použitelný i pro Multisite instalaci a bonusem pro vás jistě bude český překlad tohoto modulu.

WordPress snippety v praxi

S rostoucí popularitou WordPress stoupá i počet zajímavých snippetů. Následující výběr je ukázkou z množství užitečných řešení, několik odkazů na jiné zdroje naleznete v závěru článku.

Tímto snippetem odebereme označení WP verze z hlavičky stránky

function remove_wp_version() {
return '';
}
add_filter('the_generator', 'remove_wp_version');

 

Do hlavičky vložíme jQuery z Google Apis

if( !is_admin() ){
 wp_deregister_script('jquery');
 wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"), false, '');
 wp_enqueue_script('jquery');
}

nebo font s podporou české diakritiky z Google Fonts

function load_fonts() {
 wp_register_style ('googleFonts', 'http://fonts.googleapis.com/css?family=News+Cycle&subset=latin,latin-ext');
 wp_enqueue_style( 'googleFonts');
}
add_action('wp_print_styles', 'load_fonts');

 

Vypneme zobrazení admin baru pro všechny uživatele kromě administrátorů

if (!current_user_can('administrator')):
 show_admin_bar(false);
endif;

 

Upravíme informace o uživateli v jeho profilu

function new_contactmethods( $contactmethods ) {
 $contactmethods['twitter'] = 'Twitter'; // pridame Twitter
 $contactmethods['facebook'] = 'Facebook'; // pridame Facebook
 unset($contactmethods['yim']); // odoberieme Yahoo IM
 unset($contactmethods['aim']); // odoberieme AIM
 unset($contactmethods['jabber']); // odoberieme Jabber
 return $contactmethods;
}
add_filter('user_contactmethods','new_contactmethods',10,1);

 

Odebereme přednastavené WordPress widgety

function unregister_default_widgets() {
 unregister_widget('WP_Widget_Pages');
 unregister_widget('WP_Widget_Calendar');
 unregister_widget('WP_Widget_Archives');
 unregister_widget('WP_Widget_Links');
 unregister_widget('WP_Widget_Meta');
 unregister_widget('WP_Widget_Search');
 unregister_widget('WP_Widget_Text');
 unregister_widget('WP_Widget_Categories');
 unregister_widget('WP_Widget_Recent_Posts');
 unregister_widget('WP_Widget_Recent_Comments');
 unregister_widget('WP_Widget_RSS');
 unregister_widget('WP_Widget_Tag_Cloud');
 unregister_widget('WP_Nav_Menu_Widget');
 unregister_widget('Twenty_Eleven_Ephemera_Widget');
}
add_action('widgets_init', 'unregister_default_widgets', 11);

 

Zakážeme použití vizuálního editoru

add_filter('user_can_richedit' , create_function('' , 'return false;') , 50);

 

Zvolíme vlastní délku výpisu příspěvků

 
custom_excerpt_length($length) {
 return 100;
}
add_filter('excerpt_length', 'custom_excerpt_length');

 

Změníme přesměrování po přihlášení uživatele

add_action('login_form', 'redirect_after_login');
 function redirect_after_login() {
  global $redirect_to;
  if (!isset($_GET['redirect_to'])) {
  $redirect_to = get_option('siteurl'); // presmerujeme na homepage
 }
}

 

Autorovi povolíme 7 dní možnost úpravy již publikovaného příspěvku

function stop_post_editing_filter( $capauser, $capask, $param){
 global $wpdb;
 $post = get_post( $param[2] );
 if( $post->post_status == 'publish' ){
      // obmedzenie bude platit pre rolu Autor
      if( $capauser['author'] == 1 ){
        if( ( $param[0] == "edit_post") || ( $param[0] == "delete_post" ) ) {
          $post_time_unix = strtotime( str_replace('-', ':', $post->post_date ) );
          $current_time_unix = time();
          $diff = $current_time_unix - $post_time_unix;
          $hours_after_publication = floor( $diff / 60 / 60 );
          // po 168 hodinach od publikovania bude automaticky vypnuta moznost dalsej upravy prispevku
          if( $hours_after_publication >= 168 ){
            foreach( (array) $capask as $capasuppr) {
              if ( array_key_exists($capasuppr, $capauser) ) {
                $capauser[$capasuppr] = 0;
              }
            }
          }
        }
      }
  }
  return $capauser;
}
add_filter('user_has_cap', 'stop_post_editing_filter', 100, 3 );

 

Nastavíme interval automatického uložení příspěvku na 10 minut – 60 vteřin x 10 (v souboru wp-config.php)

define('AUTOSAVE_INTERVAL', 600);

 

Vypneme ukládání revizí příspěvků (v souboru wp-config.php)

define('WP_POST_REVISIONS', false);

 

Nebo nastavíme limit počtu revizí příspěvků na 5

define('WP_POST_REVISIONS', 5)

 

Každých 5 dní automaticky vyprázdníme koš (v souboru wp-config.php)

define('EMPTY_TRASH_DAYS', 5 );

 

Vložíme odkaz na úpravu příspěvku (např. v souborech single.php nebo page.php)

<?php edit_post_link ('Upraviť príspevok'); ?>

 

Nejznámější zdroje WordPress snippetů

WPsnipp.com

WP-snippets.com

WPfunction.me

Zálohujte, zálohujte, zálohujte!

Murpyho zákon říká jasně: čím větší chyba v kódu je, tím neočekávanějším způsobem se projeví. Chcete-li se vyhnout případným komplikacím, nezapomeňte provést zálohu upravovaného souboru a databáze.

Vytvořili jste své vlastní snippety nebo jste nějaké zajímavé objevili při toulkách internetem? Napište nám o tom do komentářů.

 

Was this article helpful for you? Support me by sharing, please. 👍
WordPress Návod v PDF

LEAVE A REPLY

Please enter your comment!
Please enter your name here