Полезные трюки по CMS Wordpress

Полезные трюки по CMS WordPress

Полезные трюки по CMS WordPress
Студии дизайн «Движок» нравится WordPress, но не все из нас готовы принять все его настройки по умолчанию — в частности, то, как отображаются Записи. Сегодня мы сконцентрируемся на трюках, которые вы можете использовать для улучшения отображения вашего WordPress поста. Хотите ли вы изменить вид поста для того, чтобы улучшить впечатление пользователя, или для увеличения дохода от просмотра страниц, вероятно, есть способ сделать это без плагина.

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

1. Изменение длины анонса записи

Измените длину отрывка, просто добавив представленные ниже строки кода в ваш файл functions.php. 75 в данном случае — значение длины отрывка.

add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($len) { return 75; }

2. Дата написания записи в стиле Twitter (2 дня назад)

Большинство не знает, что у WordPress есть встроенная функция для отображения даты в формате времени, прошедшего с момента написания поста (то есть, например «2 дня назад»), как в Twitter. Фрагмент кода, представленный ниже, можно вставить где угодно в Цикле (loop) чтобы отображать дату в этом формате.

Posted <?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago';

3. Отображение миниатюры записи в RSS ленте

Представленная в WordPress 2.9 функция the_post_thumbnail() очень удобна для добавления и отображения миниатюры к посту. Плохая новость в том, что нет встроенного метода для отображения миниатюры поста в вашей RSS-ленте. Представленная ниже функция решает эту проблему. Просто вставьте ее в ваш файл functions.php и сохраните его, и миниатюра поста автоматически будет отображаться в вашей RSS-ленте.

// show post thumbnails in feeds
function diw_post_thumbnail_feeds($content) { global $post; if(has_post_thumbnail($post->ID)) { $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content; } return $content;}add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

4. Ограничение поиска только по заголовкам записей

Вы можете добавить этот фрагмент в файл functions.php вашей WordPress темы, чтобы ограничить поиск только по заголовкам записей.

function __search_by_title_only( $search, &$wp_query )
{
if ( empty($search) )
return $search; // skip processing - no search term in query
$q =& $wp_query->query_vars;
// wp-includes/query.php line 2128 (version 3.1)
$n = !empty($q['exact']) ? '' : '%';
$searchand = '';
foreach( (array) $q['search_terms'] as $term ) {
$term = esc_sql( like_escape( $term ) );
$search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
$searchand = ' AND ';
}
$term = esc_sql( like_escape( $q['s'] ) );
if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
$search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
if ( !empty($search) ) {
$search = " AND ({$search}) ";
if ( !is_user_logged_in() )
$search .= " AND ($wpdb->posts.post_password = '') ";
}
return $search;
}
add_filter( 'posts_search', '__search_by_title_only', 10, 2 );

5. Отображение номера для каждой записи

Вы можете отображать возрастающий номер каждого поста, и сделать это достаточно просто. Сначала вставьте следующую функцию в ваш файл functions.php:

function updateNumbers() {
global $wpdb;
$querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ";
$pageposts = $wpdb->get_results($querystr, OBJECT);
$counts = 0 ;
if ($pageposts):
foreach ($pageposts as $post):
setup_postdata($post);
$counts++;
add_post_meta($post->ID, 'incr_number', $counts, true);
update_post_meta($post->ID, 'incr_number', $counts);
endforeach;
endif;
}
add_action ( 'publish_post', 'updateNumbers' );
add_action ( 'deleted_post', 'updateNumbers' );
add_action ( 'edit_post', 'updateNumbers' );

Как только вы закончите, вы можете показать номер поста с помощью следующего кода. Обратите внимание, что его нужно использовать внутри цикла.

<?php echo get_post_meta($post->ID,'incr_number',true); ?>

6. Исключение записи из ленты новостей WordPress

Хотите исключить некоторые посты из вашей ленты? Вот решение для вас. Пожалуйста, обратите внимание, что вы должны фильтровать только то, что вы хотите фильтровать; в нашем примере это наша лента $wp_query->is_feed. Если вы не сделаете это таким образом, то фильтр будет также работать в серверной части, и эти посты не будут отображаться в обзоре постов.
У функции два параметра. Вы передаете в первый параметр $where строку SQL, которая займется фильтром по ID. Дальше, в скобках, вам нужно задать ID записей, которые вы хотите отфильтровать.

function fb_post_exclude($where, $wp_query = NULL) {
global $wpdb;
if ( !$wp_query )
global $wp_query;
if ($wp_query->is_feed) {
// exclude post with id 40 and 9
$where .= " AND $wpdb->posts.ID NOT IN (40, 9)";
}
return $where;
}
add_filter( 'posts_where','fb_post_exclude', 1, 2 );

7. Редирект записи, когда поисковый запрос выдает один результат

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

add_action('template_redirect', 'single_result');
function single_result() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
}
}
}

8. Автоматическое создание мета-описания Meta Description из The_content

Вставка этого фрагмента кода в файл functions.php вашей WordPress темы автоматически создаст meta description из вашего поста, отсекая шорткоды и теги. Также убедитесь, что у вас есть этот код в файле header.php, иначе этот фрагмент не будет работать.

function create_meta_desc() {
global $post;
if (!is_single()) { return; }
$meta = strip_tags($post->post_content);
$meta = strip_shortcodes($post->post_content);
$meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
$meta = substr($meta, 0, 125);
echo "<meta name='description' content='$meta' />";
}
add_action('wp_head', 'create_meta_desc');

9. Автоматическая замена слов партнерскими ссылками

Чтобы заменить слова партнерскими ссылками автоматически, просто вставьте код ниже в ваш файл functions.php. Не забудьте вставить ваши слова / ссылки, как показано в примере ниже.

function replace_text_wps($text){
$replace = array(
// 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS'
'thesis' => '<a href="http://www.it-media.kiev.ua/">thesis</a>',
'studiopress' => '<a href="http://dvigok.com.ua/">studiopress</a>'
);
$text = str_replace(array_keys($replace), $replace, $text);
return $text;
}
add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');

10. Автоматическое добавление ссылки «Читать далее» в конце анонса записи

Добавление приведенного ниже фрагмента кода в файл functions.php вашей WordPress темы вставит постоянную ссылку «Читать далее» в конец the_excerpt, очень похоже на то, как ссылка в конце содержимого the_content:

function excerpt_readmore($more) {
return '... <a href="'. get_permalink($post->ID) . '" class="readmore">' . 'Read More' . '</a>';
}
add_filter('excerpt_more', 'excerpt_readmore');

11. Отображение похожих записей без плагина

Код ниже позволяет вашему WordPress сайту показывать похожие посты, основываясь на тегах текущего поста. Вам нужно разместить его внутри single.php или просто где угодно, где вы хотите показать похожие посты.

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'showposts'=>5, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<h3>Related Posts</h3><ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
}
?>

12. Создание своих собственных «популярных записей» в сайдбаре

Установка виджета сайдбара для отображения похожих постов очень проста. Просто скопируйте и вставьте код ниже в ваш файл sidebar.php. Если вам нужно изменить количество отображаемых постов, вы можете изменить 5 в конце третьей строки на любое число, которое вам нравится.

<h2>Popular Posts</h2>
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
<?php } } ?>
</ul>

13. Отображение AdSense только для посетителей с поисковых систем

Можно показать AdSense только посетителям, пришедшим через поиск поисковых систем, и вот код для этого, просто вставьте его в файл functions.php вашей темы.

function scratch99_fromasearchengine(){
$ref = $_SERVER['HTTP_REFERER'];
$SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.');
foreach ($SE as $source) {
if (strpos($ref,$source)!==false) return true;
}
return false;
}

В массиве $SE вы определяете поисковые системы. Вы можете добавить новую поисковую систему, добавив элемент в массив, затем вставить код где угодно в шаблоне, где вы хотите показать рекламу AdSense, и все! Реклама будет отображаться только посетителям, пришедшим на сайт через поисковые системы.

if (function_exists('scratch99_fromasearchengine')) {
if (scratch99_fromasearchengine()) {
INSERT YOUR CODE HERE
}
}

14. Дополнительные HTML теги в редакторе

По умолчанию, редактор WordPress не позволяет HTML теги, которые не совместимы со стандартом XHTML 1.0. Тем не менее, представленный ниже код заставит редактор поддерживать больше тегов. Вы можете вставить фрагмент кода в файл functions.php вашей темы, сохранить его, и функция будет работать.

function fb_change_mce_options($initArray) {
// Comma separated string od extendes tags
// Command separated string of extended elements
$ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder |scrolling|marginheight|marginwidth|src]';
if ( isset( $initArray['extended_valid_elements'] ) ) {
$initArray['extended_valid_elements'] .= ',' . $ext;
} else {
$initArray['extended_valid_elements'] = $ext;
}

// maybe; set tiny paramter verify_html
//$initArray['verify_html'] = false;
return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_options');

15. Установка редактора по умолчанию

Представленный ниже фрагмент кода меняет редактор по умолчанию в консоли WordPress. Вы можете использовать Visual Editor или HTML Editor, просто добавьте один из них в файл functions.php.

# This sets the Visual Editor as default
add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') );
# This sets the HTML Editor as default
add_filter( 'wp_default_editor', create_function('', 'return "html";') );

16. Загрузка большего количества типов файлов

По определенной причине загрузчик WordPress не позволит вам загружать некоторые типы файлов, например .tmCommand. Если вам нужно загружать эти типы файлов на ваш сайт WordPress, вот функциональный фрагмент кода, который позволит вам это сделать. Вам нужно просто вставить его в ваш файл functions.php. Вы можете также добавить больше типов файлов, добавив их в строку 4, разделив при этом символом |.

<?php
function addUploadMimes($mimes) {
$mimes = array_merge($mimes, array(
'tmbundle|tmCommand|tmDragCommand|tmSnippet|tmLanguage|tmPreferences' => 'application/octet-stream'
));
return $mimes;
}
?>
add_filter('upload_mimes', 'addUploadMimes');

17. Форматы записей — интересные вариации для темы

Представленный ниже синтаксис дает некоторые из возможных форматов постов, которые затем могут быть выбраны и использованы прямо в статье; и все, что вам нужно, это вставить код в файл functions.php вашей темы.

add_theme_support( 'post-formats', array( 'aside', 'audio', 'image', 'video' ) );

17. Установка максимальной длинны заголовка записи

Добавление этого PHP кода в functions.php файл вашей WordPress темы установит максимальное количество слов, которое может быть отображено в заголовке поста.

function maxWord($title){
global $post;
$title = $post->post_title;
if (str_word_count($title) >= 10 ) //set this to the maximum number of words
wp_die( __('Error: your post title is over the maximum word count.') );
}
add_action('publish_post', 'maxWord');

18. Как изменить стандартный шрифт WordPress редактора

Вам ужасно не нравится шрифт, который используется в редакторе WordPress? Его можно изменить на современный шрифт, например, Monaco или Consolas, просто вставьте код в файл functions.php вашей темы WordPress.

function change_editor_font(){
echo "<style type='text/css'>
#editorcontainer textarea#content {
font-family: Monaco, Consolas, \"Andale Mono\", \"Dejavu Sans Mono\", monospace;
font-size:14px;
color:#333;
}
</style>";
}
add_action("admin_print_styles", "change_editor_font");

19. Изменение длины анонса в зависимости от Рубрики

Хотели изменить длину отрывка в зависимости от того, в какой вы Рубрике? Вот код, который исполнит ваше желание. Просто вставьте код в ваш functions.php файл и не забудьте заменить ID Рубрики в третьей строке!

add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($length) {
if(in_category(14)) {
return 13;
} else {
return 60;
}
}

20. Отключение автоматического сохранения записи

Если по какой-то уважительной причине вы хотите отключить функцию, которая делает авто-сохранение вашего поста, когда вы редактируете его в консоли, это возможно. Просто откройте ваш файл functions.php и вставьте в него следующий код:

function disableAutoSave(){
wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disableAutoSave' );

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

Вот и все.
Если Вы хотите «поблагодарить» наш информационный портал о веб-разработке — у вас есть такая возможность: справа есть варианты для пожертвований на развитие портала. Или поделитесь статьей в ваших соц.стеях через сервисы ниже.

Отправить ответ

Please Login to comment
Войти с помощью: 
  Subscribe  
Notify of
Authorization
*
*
Войти с помощью: 
Registration
*
*
*
Войти с помощью: 

one + four =

Password generation