Рассмотрим топ полезных фрагментов кода (сниппетов) для wordpress.
Как воспользоваться сниппетами?
1. Вставить в файл functions.php.
Чтобы открыть файл functions.php нужно войти в админку wordpress, в левом меню выбрать пункт “Внешний вид”, его подпункт “Редактор”, справа в списке шаблонов найти файл functions.php и открыть его. Далее можете в самый низ кода файл functions вставить код сниппета.
Но не забывайте, есть вы обновите/измените тему (шаблон) сайта файл functions.php тоже поменяется.
2. Создать дочернюю тему (о том как её создать читайте здесь – “codex.wordpress.org/Дочерние_темы”).
3. Создать плагин (как создать плагин wordpress читайте тут – “mnogoblog.ru/sozdaem-prostoj-plagin-wordpress-mnogoblogplugin”.
Также перед тем как изменять код файлов вашего сайта – не забудьте сделать резервную копию сайта, что позволит восстановить работу сайта при допущении ошибки.
А теперь перейдем непосредственно к СНИППЕТАМ WORDPRESS:
1. Добавляем возможность использование шорткодов в виджетах wordpress:
add_filter( 'widget_text', 'do_shortcode' );
После вставки данного сниппета вы сможете использовать шорткоды в виджете с названием “ТЕКСТ”.
2. Как заработать деньги в интернете.
3. Перенаправляем новых, только что зарегистрированных, пользователей на определенную страницу сайта:
function wps_registration_redirect(){ return home_url( '/finished/' ); } add_filter( 'registration_redirect', 'wps_registration_redirect' );
Здесь поменяйте “/finished/” на url, на который должен перейти пользователь после завершения процедуры регистрации на вашем сайте.
4. Изменяем количество сохраненный редакций записи/страницы wordpress:
При каждом изменении записи/страницы wordpress периодически записывает ее сохраненную копию (редакцию) в Базу Данных wordpress, что увеличивает её размеры, желательно ограничить количество сохраненных копий записи/страниц до разумных значений, например до 3-5.
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 5); if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);
5. Показать Дату публикации поста (записи), а также Дату последнего изменения поста (записи).
Опубликовано <?php the_time('F jS, Y') ?> <?php $u_time = get_the_time('U'); $u_modified_time = get_the_modified_time('U'); if ($u_modified_time != $u_time) { echo " и последние изменения"; the_modified_time('F jS, Y'); echo ". "; } ?>
6. Скрыть версию wordpress, которую использует ваш сайт:
<?php // Remove the version number of WP // Warning - this info is also available in the readme.html file in your root directory - delete this file! remove_action('wp_head', 'wp_generator'); ?>
Есть еще более функциональный сниппет для скрытия версии wordpress из всех источников (RSS ленты, мета-тегов, в стоках запроса к скриптам и стилям):
/* Hide WP version strings from scripts and styles * @return {string} $src * @filter script_loader_src * @filter style_loader_src */ function fjarrett_remove_wp_version_strings( $src ) { global $wp_version; parse_str(parse_url($src, PHP_URL_QUERY), $query); if ( !empty($query['ver']) && $query['ver'] === $wp_version ) { $src = remove_query_arg('ver', $src); } return $src; } add_filter( 'script_loader_src', 'fjarrett_remove_wp_version_strings' ); add_filter( 'style_loader_src', 'fjarrett_remove_wp_version_strings' ); /* Hide WP version strings from generator meta tag */ function mnogoblog_remove_version() { return ''; } add_filter('the_generator', 'mnogoblog_remove_version');
7. Скрыть сообщение о необходимости обновления движка wordpress:
// Hide WordPress Update function wp_hide_update() { remove_action('admin_notices', 'update_nag', 3); } add_action('admin_menu','wp_hide_update');
8. Удалить поле URL из формы комментариев:
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields');
9. Отключить автоматическое сжатие JPEG в wordpress:
Если вы фотограф и не хотите, чтобы wordpress сжимал ваше фото, тем самым ухудшал их качество или же вы используете wordpress плагины, которые более эффективно сжимают изображения, например: Optimus или WP Smush, то можно воспользоваться следующим сниппетом:
add_filter( 'jpeg_quality', 'smashing_jpeg_quality' ); function smashing_jpeg_quality() { return 100; }
10. Требуем обязательной публикации МИНИАТЮРЫ ЗАПИСИ.
Если ваш сайт ведут несколько авторов, то некоторые из них могут забыть загрузить и вставить изображение миниатюры записи, что будет не очень красиво выглядеть на главной странице сайта, если у вас на ней публикуются названия и анонсы последних записей с миниатюрами.
add_action('save_post', 'wpds_check_thumbnail'); add_action('admin_notices', 'wpds_thumbnail_error'); function wpds_check_thumbnail($post_id) { // change to any custom post type if(get_post_type($post_id) != 'post') return; if ( !has_post_thumbnail( $post_id ) ) { // set a transient to show the users an admin message set_transient( "has_post_thumbnail", "no" ); // unhook this function so it doesn't loop infinitely remove_action('save_post', 'wpds_check_thumbnail'); // update the post set it to draft wp_update_post(array('ID' => $post_id, 'post_status' => 'draft')); add_action('save_post', 'wpds_check_thumbnail'); } else { delete_transient( "has_post_thumbnail" ); } } function wpds_thumbnail_error() { // check if the transient is set, and display the error message if ( get_transient( "has_post_thumbnail" ) == "no" ) { echo " <div id="message" class="error"> You must select Featured Image. Your Post is saved but it can not be published. </div> "; delete_transient( "has_post_thumbnail" ); } }
11. Заменяем приветствие в админке wordpress при входе пользователя на более оригинальную фразу.
function replace_howdy( $wp_admin_bar ) { $my_account=$wp_admin_bar->get_node('my-account'); $newtitle = str_replace( 'Howdy,', 'Logged in as', $my_account->title ); $wp_admin_bar->add_node( array( 'id' => 'my-account', 'title' => $newtitle, ) ); } add_filter( 'admin_bar_menu', 'replace_howdy',25 );
Здесь поменяйте “Logged in as” на ту фразу, которой хотите приветствовать входящего пользователя.
12. Запрещаем выводить записи определенной категории на главной странице сайта:
function exclude_category_home( $query ) { if ( $query->is_home ) { $query->set( 'cat', '-5, -34' ); } return $query; } add_filter( 'pre_get_posts', 'exclude_category_home' );
В данном сниппете на главной странице сайта не будут выводиться категории с id равными 5 и 34.
13. Изменяем количество выводимых результатов при использовании функции “Поиска по сайту”:
function limit_posts_per_search_page() { if ( is_search() ) set_query_var('posts_per_archive_page', 20); } add_filter('pre_get_posts', 'limit_posts_per_search_page');
14. Убрать надпись “Защищено” или “Личное”, если вы публикуете защищенные паролем или личные записи:
function the_title_trim($title) { $title = attribute_escape($title); $findthese = array( '#Protected:#', '#Private:#' ); $replacewith = array( '', // What to replace "Protected:" with '' // What to replace "Private:" with ); $title = preg_replace($findthese, $replacewith, $title); return $title; } add_filter('the_title', 'the_title_trim');