Данная статья является продолжением серии статей о сниппетах. Теперь мы рассмотрим сниппеты 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' );