+7(982) 597-7179

WordPress сниппеты

Время на прочтение: 3 мин.

Данная статья является продолжением серии статей о сниппетах. Теперь мы рассмотрим сниппеты wordpress. Напоминаю, что статья будет постоянно пополняться. Советую пересматривать ее и по возможности в комментариях исправлять ошибки и добавлять новые.

Работа с комментариями

/*разрешить использовать шорткоды в комментах*/ 
add_shortcode('spoiler', 'hyper_spoiler'); 

Работа с записями

/*добавить свой текст в конец или начало записи*/
//добавление своего текст после записи start
function wph_custom_content($content){
if (is_single()) { 
    $content .= '<p>Текст после записи.</p>';
}
    return $content;
}
add_filter('the_content', 'wph_custom_content');
//добавление своего текст после записи end

//добавление своего текст до записи start
function wph_custom_content($content){
if (is_single()) { 
    $temp = '<p>Текст до записи.</p>';
    $content = $temp . $content;
}
    return $content;
}
add_filter('the_content', 'wph_custom_content');
//добавление своего текст до записи end
/*подсчет просмотров*/
<pre class="brush: php; gutter: true">function setPostViews( $postID ) {
    $count_key = 'post_views_count';
    $count     = get_post_meta( $postID, $count_key, true );
    if ( $count == '' ) {
        $count = 0;
        delete_post_meta( $postID, $count_key );
        add_post_meta( $postID, $count_key, '' );
    } else {
        $count ++;
        update_post_meta( $postID, $count_key, $count );
    }
}

function getPostViews( $postID ) {
    $count_key = 'post_views_count';
    $count     = get_post_meta( $postID, $count_key, true );
    if ( $count == '' ) {
        delete_post_meta( $postID, $count_key );
        add_post_meta( $postID, $count_key, '0' );

        return "0";
    }

    return $count;
}

function get_PostViews($post_ID){

    $count_key = 'post_views_count';

    $count = get_post_meta($post_ID, $count_key, true);

    return $count;

}

function post_column_views($newcolumn){

    $newcolumn['post_views'] = __('Просмотры');

    return $newcolumn;

}

function post_custom_column_views($column_name, $id){

    if($column_name === 'post_views'){

        echo get_PostViews(get_the_ID());

    }

}

add_filter('manage_posts_columns', 'post_column_views');
add_action('manage_posts_custom_column', 'post_custom_column_views',10,2);

/*
 * ЭТО ВСТАВИТЬ В ЦИКЛ loop В single.php
<?php setPostViews(get_the_ID()); //подсчет просмотров?>
*/

 /*убираем квадратные скобки на в превью текста*/
add_filter('excerpt_more', function($more) {
return '...'
});

/*запретить индексирование страниц вложений*/
function wph_noindex_for_attachment() {
    if(get_post_mime_type()!= false) {
        echo '<meta name="robots" content="noindex, nofollow">'.PHP_EOL;
    }
}
add_action('wp_head', 'wph_noindex_for_attachment');

Работа с категориями

// убираем из url хлебных крошек слово category
add_filter('category_link', create_function('$a', 'return str_replace("category/", "", $a);'), 9999);

Работа с редактором

/*вернуть кнопки «Подчеркнутый» и «По ширине» в редактор*/
function wph_restore_buttons($buttons) { 
    $buttons[] = 'underline';
    $buttons[] = 'alignjustify';
    return $buttons;
}
add_filter('mce_buttons_2', 'wph_restore_buttons'); 

Работа с картинками

/*автоматически добавить атрибут lightbox ссылкам на картинки*/
function wph_auto_add_rel_lightbox($content) {
    $pattern ="/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
    $replacement = '<a$1href=$2$3.$4$5 rel="lightbox"$6>';
    $content = preg_replace($pattern, $replacement, $content);
    return $content;
}
add_filter('the_content', 'wph_auto_add_rel_lightbox');

/* микроразметка изображений */
function micro_image($content) {
global $post;
$pattern = "<img";
$replacement = '<img itemprop="image"';
$content = str_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'micro_image');
/*Как автоматически заполнять поля alt, caption и description при загрузке файлов?*/
function wph_auto_alt_title_caption($attachment_ID) {
 
    $filename   = $_REQUEST['name'];
    $withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);
    $withoutExt = str_replace(array('-','_'), ' ', $withoutExt);
 
    $my_post = array(
        'ID'           => $attachment_ID,
        'post_excerpt' => $withoutExt,  //подпись
        'post_content' => $withoutExt,  //описание
    );
    wp_update_post($my_post);
 
    //атрибут alt
    update_post_meta($attachment_ID, '_wp_attachment_image_alt', $withoutExt);
}
add_action('add_attachment', 'wph_auto_alt_title_caption');

Работа с галереей

/*уберем в галереи перенос строк*/
add_filter( 'the_content', 'remove_br_gallery', 11, 2);
function remove_br_gallery($output) {
    return preg_replace('/<br style=(.*)>/mi','',$output);
}

Работа с комментариями

//убираем поле сайт из комментов
function remove_comment_fields($fields) {
 unset($fields['url']);
 return $fields;
}
add_filter('comment_form_default_fields', 'remove_comment_fields');

//перенаправление на /thank-you-post/ после комментирования start
function wph_redirect_after_comment(){
    wp_redirect('/thank-you-post/');
    exit();
}
add_filter('comment_post_redirect', 'wph_redirect_after_comment');
//перенаправление на /thank-you-post/ после комментирования end

Работа с административной панелью

/*поменять логотип WordPress на странице авторизации*/
function wph_login_logo() {
    echo "
    <style>
    body.login #login h1 a {
        background: url('".get_bloginfo('template_url')."/images/logo-login.png') no-repeat scroll center top transparent;
        height: 77px;
        width: 320px;
    }
    </style>
    ";
};
add_action('login_head', 'wph_login_logo');
//замена картинки логотипа на странице авторизации end
 
//замена ссылки логотипа start
function wph_login_link() {
    return 'https://www.wphook.ru';
}
add_filter('login_headerurl','wph_login_link');
//замена ссылки логотипа end
 
//замена title логотипа по умолчанию start 
function wph_login_title() {
    return 'Свой собственный тултип';
}
add_filter('login_headertitle', 'wph_login_title');
/*создать свой административный виджет в консоли*/
function wph_admin_widget() {
?>
    <ol>
    <?php
    global $post;
    $args = array('numberposts'; => 5);
    $myposts = get_posts($args);
    foreach($myposts as $post) :
        setup_postdata($post); ?>
        <li> (<? the_date('d.m.Y'); ?>)  < a href="<?php the_permalink(); ?>">
        <?php the_title(); ?> < /a> < /li>;
    <?php endforeach; ?>
    </o>
<?php
}
function wph_add_recent_posts_widget() {
    wp_add_dashboard_widget('wph_admin_widget', 'Последние записи', 'wph_admin_widget');
}
add_action('wp_dashboard_setup', &#'039;wph_add_recent_posts_widget');

Кэш

При каждом обновлении файла будет меняться ее версия и теперь не надо каждый раз нажимать ctrl+f5

function enqueue_versioned_script( $handle, $src = false, $deps = array(), $in_footer = false ) {
 wp_enqueue_script( $handle, get_template_directory_uri() . $src, $deps, filemtime( get_template_directory() . $src ), $in_footer );
}
function enqueue_versioned_style( $handle, $src = false, $deps = array(), $media = 'all' ) {
 wp_enqueue_style( $handle, get_template_directory_uri() . $src, $deps = array(), filemtime( get_template_directory() . $src ), $media );
}

function themename_scripts() {
 enqueue_versioned_style( 'themename', '/style.css' );
 enqueue_versioned_script( 'themename', '/js/scripts.js', array( 'jquery'), true );
}
 
add_action( 'wp_enqueue_scripts', 'themename_scripts' );

Читайте также:

Приглашаем поучаствовать в обсуждении статьи:

Комментариев 0