Небольшие фрагменты кода, расширяющие функциональность WordPress. Вот как можно охарактеризовать сниппеты одним предложением. Что модули тоже играют эту роль? Да, они очень похожи по своей сути, но уникальность сниппетов определяют два ключевых фактора: они не требуют установки и за счет минимального объема не нагружают сервер.
Obsah
Как работать со сниппетами WordPress?
Наиболее распространенным местом для хранения сниппетов является файл functions.php в активной теме, и он может быть столь же полезен для глобального использования в файле wp-config.php. Просто откройте текстовый редактор и добавьте в эти файлы соответствующий код. Определенным недостатком ручной вставки сниппетов является их привязка к активированной в данный момент теме, за исключением упомянутого выше исключения с wp-config.php.
Решением является модуль Code Snippets , работающий системно и в комфорте административной среды, предлагающий, помимо обязательного добавления, изменения, удаления собственных кодов, также их резервное копирование через файл XML. Отдельные сниппеты можно активировать и выключать по мере необходимости, сниппеты кода также можно использовать для мультисайтовой установки, а словацкий перевод этого модуля, безусловно, будет для вас бонусом.
Сниппеты WordPress на практике
С ростом популярности WordPress увеличивается и количество интересных сниппетов. Следующая подборка является примером ряда полезных решений, несколько ссылок на другие ресурсы можно найти в конце статьи.
Этот фрагмент удаляет метку версии WP из заголовка страницы.
function remove_wp_version() { return ''; } add_filter('the_generator', 'remove_wp_version');
В шапку вставим jQuery из 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'); }
или шрифт с поддержкой словацкого акцента из 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');
Мы отключим отображение панели администратора для всех пользователей, кроме администраторов.
if (!current_user_can('administrator')): show_admin_bar(false); endif;
Мы отредактируем информацию пользователя в его профиле
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);
Мы удалим предустановленные виджеты WordPress
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);
Мы отключим использование визуального редактора
add_filter('user_can_richedit' , create_function('' , 'return false;') , 50);
Мы сами выберем длину списка взносов
custom_excerpt_length($length) { return 100; } add_filter('excerpt_length', 'custom_excerpt_length');
Мы изменим перенаправление после входа пользователя в систему.
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 } }
Мы даем автору 7 дней на редактирование уже опубликованной статьи
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 );
Установим интервал автоматического сохранения поста 10 минут — 60 секунд х 10 (в файле wp-config.php)
define('AUTOSAVE_INTERVAL', 600);
Отключить публикацию ревизий (в wp-config.php)
define('WP_POST_REVISIONS', false);
Или мы устанавливаем ограничение на количество ревизий постов до 5
define('WP_POST_REVISIONS', 5)
Мы автоматически очищаем Корзину каждые 5 дней (в файле wp-config.php)
define('EMPTY_TRASH_DAYS', 5 );
Мы вставим ссылку для редактирования поста (например, в файлах single.php или page.php)
<?php edit_post_link ('Upraviť príspevok'); ?>
Самые известные источники сниппетов WordPress
Резервное копирование, резервное копирование, резервное копирование!
Закон Мёрпи ясен: чем больше ошибка в коде, тем неожиданнее она покажется. Во избежание возможных осложнений не забудьте сделать резервную копию редактируемого файла и базы данных.
Вы создали свои собственные фрагменты или нашли несколько интересных, блуждая по Интернету? Напишите нам об этом в комментариях.
Was this article helpful for you? Support me by sharing, please. 👍