сниппеты wordpress

Самые полезные сниппеты wordpress

Рассмотрим топ полезных фрагментов кода (сниппетов) для 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');