Рассмотрим топ полезных фрагментов кода (сниппетов) для 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 из формы комментариев:
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
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');

