Миниатюра записи в админке

Казалось бы, простая вещь, но не в каждой теме в админке в списке всех записей отображается миниатюра. Всегда думал, что это фишка вордпресса, но нифига, по дефолту ее нет.

Чтобы было, в functions.php пихаем

// Колонка миниатюры в списке записей админки
add_filter('manage_posts_columns', 'posts_columns', 5);
add_action('manage_posts_custom_column', 'posts_custom_columns', 5, 2);
 
function posts_columns($defaults){
    $defaults['riv_post_thumbs'] = __('Миниатюра');
    return $defaults;
}
 
function posts_custom_columns($column_name, $id){
	if($column_name === 'riv_post_thumbs'){
        the_post_thumbnail( array(50, 50) );
    }
}

Причем размер фото в последней строчке и менять не надо - большая она занимает слишком много места, а суть в том, чтобы просто видеть, есть миниатюра у записи, или нет.

Форматирование в короткой новости Вордпресса

Внезапно столкнулся с тем, что моя тема бьет все форматирование короткой новости. К счастью, решение нагуглилось довольно быстро.

В functions.php вставляем
function improved_trim_excerpt($text) {
global $post;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text);
$text = strip_tags($text, '<p>,<br>,<h2>,<h1>,<em>,<strong>,<a>');
$excerpt_length = 4500;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words)> $excerpt_length) {
array_pop($words);
array_push($words, ' ...');
$text = implode(' ', $words);
}
}
return $text;
}

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');

Думаю тут все понятно, обращаем внимание на

  1. $excerpt_length = 4500 - длина текста;
  2. Строчка $text = strip_tags отвечает за то, какие теги останутся в короткой новости;
  3. array_push($words, ' ...'); - это то, что будет стоять в конце перед ссылкой "Читать дальше". В данном случае - многоточие.

Хардкодинг в плагинах

email-subscribers

/farm.com/public_html/wp-content/plugins/email-subscribers/classes/es-loadwidget.php

  1. Строчку

$es = $es . '<input class="es_textbox_class" name="es_txt_email_pg" id="es_txt_email_pg" onkeypress="if(event.keyCode==13) es_submit_pages('.$url.')" value="" maxlength="225" type="text" placeholder="введите ваш e-mail">';

Тут вставил placeholder="введите ваш e-mail"

2. ИЗ строки выпилил все $es = $es . '<div class="es_lablebox">'.__('Email *', 'email-subscribers').'</div>';

Стало так: $es = $es . '';

Свой темплейт для новостей категории

Года 2 назад делал сабж, и вот сейчас понадобилось повторить... так снова начал гуглить, как это делать. В итоге потратил полчаса и решил записать для себя этот несложный алгоритм 🙂

  1. Открываем файл single.php. Он у нас будет состоять из следующего кода:
    <?php
    $post = $wp_query->post;if (in_category('30')) {
    include(TEMPLATEPATH.'/single-my-category.php');
    } else {
    include(TEMPLATEPATH.'/single-default.php');
    }
    ?>
    Здесь обращаем внимание на ID категории и на темплейт, который будет вызываться для всех новостей из нее.
  2. Соответственно, создаем темплейт single-my-category.php, в котором и делаем свою верстку. Все!

А вот и не все 🙂 Для того, чтобы эта конструкция работала с двумя категориями, в которых разные темплейты, она должна быть такой:

 

<?php
$post = $wp_query->post;

if (in_category('44')) {
include(TEMPLATEPATH.'/single-one.php');
}
elseif (in_category('146')) {
include(TEMPLATEPATH.'/single-two.php');
}
else
{
include(TEMPLATEPATH.'/single-default.php');
}
?>

Оптимизация базы Вордпресс: удаление ревизий статей

Редко пишу сам себе, но вот эту фичу хочу оставить. Ревизии и автосохранения постов - это про меня. Потому что обожаю писать прямо в админке. В итоге, как выяснилось, на каждое автосохранение статьи вордпресс создает ПОЛНУЮ КОПИЮ статьи в базе... которая хранится там потом до скончания века. Читать далее

Страница 1 из 512345