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.
Obsah
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ů
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. 👍