Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Wordpress How To
цитата
14/02/11 в 21:51
 Yacc


Вопросы?

Последний раз редактировалось: Yacc (06/06/12 в 11:09), всего редактировалось 9 раз(а)
цитата
14/02/11 в 21:57
 Yacc
Мета тэги

СЕ-оптимальные TITLE, DESCRIPTION и ROBOTS



Description обрезается на границе слова/предложения так, чтобы было не больше 200 символов.

Вставлять в начало секции <HEAD> в файле header.php

<?php
   global $page, $paged;

   $title = get_bloginfo( 'name' );
   $desc = get_bloginfo( 'description' );
   $robots = "noodp";

   if (is_singular() ) {
      if ( have_posts() ) {
         while ( have_posts() ) {
            the_post();
            $title = get_the_title();
            if(!is_attachment()) {
               $desc = preg_replace( '/<a.+a>/i', '', get_the_excerpt() );
            }
            else {
               $desc = get_post_meta(get_the_id(), '_wp_attachment_image_alt', true);
            }
         }
      }
   }
   elseif(is_category()) {
      $title = single_cat_title("", false);
      $desc = strip_tags( category_description() );
   }
   elseif(is_tag()) {
      $title = single_tag_title("", false);
      $desc = strip_tags( tag_description() );
   }
   elseif(is_date() || is_search()) {
      $title =  is_date() ? 'Archive' : wp_title("", false) ;
      if ( have_posts() ) {
         $desc = '';
         while ( have_posts() ) {
            the_post();
            $desc .= get_the_title() . " ";
         }
      }
      $robots = "noindex,nofollow";
   }
   elseif(is_404()) {
      $title = 'Not found';
      $desc = '';
      $robots = "noindex,nofollow";
   }
   if ( $paged >= 2 || $page >= 2 ) {
      $title .= ' | Page ' . max( $paged, $page );
   }
   
   if( strlen($desc) > 200 ) {
      $desc = preg_replace('#(?<=[.!?])[^.!?]+$#i', '', substr($desc, 0, 200));
   }
?>
<title><?php echo $title; ?></title>
<meta name="description" content="<?php echo $desc; ?>"/>
<meta name="robots" content="<?php echo $robots; ?>"/>


Удалить rsd_link, wlwmanifest_link, wp_generator.

Вставлять в конец файла functions.php

add_action('init',
   create_function('',
      'remove_action("wp_head", "rsd_link");
      remove_action("wp_head", "wlwmanifest_link");
      remove_action("wp_head", "wp_generator");'
   )
);

Пинайте. icon_smile.gif

Последний раз редактировалось: Yacc (02/03/11 в 11:48), всего редактировалось 5 раз(а)
цитата
14/02/11 в 23:47
 Crappyday
что это было?
цитата
14/02/11 в 23:51
 Yacc
Где? Почему было?

Последний раз редактировалось: Yacc (05/10/13 в 16:20), всего редактировалось 3 раз(а)
цитата
14/02/11 в 23:53
 Uz
Yacc, если не сложно посмотри прошлый топик, мож кинешь код для вывода постов в категориях и тегах там чёт я запутался smail54.gif
цитата
15/02/11 в 00:07
 Crappyday
а как поможешь человеку - черкни тут пару строк - к чему код, а то я пошарил предыдущие топики и не увидал к чему ты это. просто сеошный? правильно прописывает мета и дескрипшен?
цитата
15/02/11 в 00:08
 alfy
где редактируется вот этот титл в стандартных ссылках на категории в ВП?
title="View all posts in blablabla category"
цитата
15/02/11 в 00:09
 Yacc
Uz писал:
... у меня в файлах category.php и tag.php вот эти функции get_template_part( 'loop', 'tag' ); ну и get_template_part( 'loop', 'category' );
нужно создавать отдельно loop-tag.php и loop-category.php ?
а туда какой код поставить чтобы отобразить эти блин посты по тегам и категориям ?
спасибо


В общем виде:

Код:
<?php
if ( ! have_posts() ) {
   get_template_part('loop', '404');
}
else {
   while ( have_posts() ) {
      the_post();
      the_title();
      the_content();
   }
}


Детали зависят от темы.

Последний раз редактировалось: Yacc (15/02/11 в 00:19), всего редактировалось 1 раз
цитата
15/02/11 в 00:16
 Yacc
alfy писал:
где редактируется вот этот титл в стандартных ссылках на категории в ВП?
title="View all posts in blablabla category"


wp-includes/category-template.php
цитата
15/02/11 в 00:16
 Yacc
Crappyday писал:
правильно прописывает мета и дескрипшен?

Правильно и красиво. icon_smile.gif
цитата
15/02/11 в 00:18
 Crappyday
а, ептель, ну тогда безусловно полезная штука! )) забрал постестим, поковыряем icon_smile.gif
цитата
15/02/11 в 05:13
 pingwin
а чем олинсео отличается? о чем ВЫ???
меньше запросов к базе? так все кэшируется.
титлы и дески. а кеи вы откуда возмете для каждого поста как не из мета-тегов?

КТО здесь?
цитата
15/02/11 в 10:00
 Yacc
pingwin писал:
КТО здесь?

Тебе кого НАДО?
цитата
15/02/11 в 10:13
 pingwin
хочу ВСЕХ посмотреть
цитата
15/02/11 в 11:18
 tooouser
Yacc хороший пост, спасибо! smail54.gif
цитата
15/02/11 в 13:23
 Yacc
Похожие посты

Вставлять внутрь цикла в файле single.php

На основе первой категории поста.
<?php
   $post_id = get_the_id();
   $post_categories = wp_get_post_categories($post_id);
   if ($post_categories) {
      $cat_id = $post_categories[0];      
      $args=array(
         'category__in' => array($cat_id),
         'post__not_in' => array($post_id),
         'showposts' => 5,
         'caller_get_posts' => 1
      );
      $related_posts = new WP_Query($args);
      if( $related_posts->have_posts() ) { ?>
         <div class="related">
            Posts related to <strong><?php echo get_cat_name($cat_id); ?></strong>
            <ul> <?php
         while ($related_posts->have_posts()) {
            $related_posts->the_post(); ?>
               <li>
                  <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                     <?php the_title(); ?>
                  </a>
               </li> <?php
         }
         wp_reset_query(); ?>
            </ul>
         </div> <?php
      }
   }
?>

На основе первой метки поста.
<?php
   $post_id = get_the_id();
   $post_tags = wp_get_post_tags($post_id);
   if ($post_tags) {
      $args=array(
         'tag__in' => array($post_tags[0]->term_id),
         'post__not_in' => array($post_id),
         'showposts' => 5,
         'caller_get_posts' => 1
      );
      $related_posts = new WP_Query($args);
      if( $related_posts->have_posts() ) { ?>
         <div class="related">
            Posts related to <strong><?php echo $post_tags[0]->name; ?></strong>
            <ul> <?php
         while ($related_posts->have_posts()) {
            $related_posts->the_post(); ?>
               <li>
                  <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                     <?php the_title(); ?>
                  </a>
               </li> <?php
         }
         wp_reset_query(); ?>
            </ul>
         </div> <?php
      }
   }
?>

На основе ID постов, заданых через запятую в Custom Field с именем Related post ids.
<?php
   $post_id = get_the_id();
   $related_posts_ids = get_post_meta($post_id, 'Related post ids', true);
   $ids = explode(',', $related_posts_ids);
   if (count($ids) > 0) {
      $args = array(
         'post__in' => $ids,
         'caller_get_posts' => 1
      );
      $related_posts = new WP_Query($args);
      if( $related_posts->have_posts() ) { ?>
         <div class="related">
            Related posts
            <ul> <?php
         while ($related_posts->have_posts()) {
            $related_posts->the_post(); ?>
               <li>
                  <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                     <?php the_title(); ?>
                  </a>
               </li> <?php
         }
         wp_reset_query(); ?>
            </ul>
      </div> <?php
      }      
   }
?>

Пинайте. icon_smile.gif

Последний раз редактировалось: Yacc (17/02/11 в 19:21), всего редактировалось 4 раз(а)
цитата
15/02/11 в 14:33
 FXIX
Оффтопик:
бро ты бы лучше блоги делал smail101.gif. как тут некоторые деломаны по 130 баксов за говна кусочек. Твои бы улетали по 200
цитата
15/02/11 в 14:51
 Yacc
FXIX писал:
Оффтопик:
бро ты бы лучше блоги делал smail101.gif. как тут некоторые деломаны по 130 баксов за говна кусочек. Твои бы улетали по 200

Делаю $50.
Вставайте в очередь. icon_smile.gif
цитата
15/02/11 в 14:53
 Yacc
Метки

Автоматическое создание меток из заголовка поста.

Вставлять в конец файла functions.php

Метки будут создаваться всякий раз после нажатия кнопки Publish/Update. Для меток берутся только слова - без цифр, знаков препинания и т.п., длинной от 3 до 10 символов. Кроме того фильтруются слова из массива $blacklist.

<?php
   function stop_words_filter($tag) {   
      $blacklist = array( 'the', 'and', 'kids', 'lolita', 'etc' );
      return !in_array( strtolower($tag), $blacklist );
   }
   
   function extract_tags($title) {
      preg_match_all('/([A-Za-z]){3,10}(?=(\W|$))/', $title, $matches);
      return $matches[0];
   }

   function create_tags($post_ID)
   {
      global $_POST;
      if($_POST) {
         $tags = array_map( 'ucfirst', array_values( array_filter( extract_tags( $_POST['post_title'] ), 'stop_words_filter' ) ) );
         wp_set_object_terms( $post_ID, $tags, 'post_tag', true );
      }
   }
   add_action('save_post', 'create_tags' );
?>

Пинайте. icon_smile.gif

Последний раз редактировалось: Yacc (05/03/11 в 02:14), всего редактировалось 4 раз(а)
цитата
15/02/11 в 15:37
 pingwin
Yacc писал:
Удалить rsd_link, wlwmanifest_link, wp_generator.
у меня так было. косячу? или все-таки от версии зависит?;)))
automatic_feed_links(false);
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'wp_generator');
function remove_unnecessary_tags() {
   remove_action( 'wp_head', 'index_rel_link' );
   remove_action( 'wp_head', 'rel_canonical' );
   remove_action( 'wp_head', 'wp_shortlink_wp_head' );
   remove_action( 'wp_head', 'parent_post_rel_link' );
   remove_action( 'wp_head', 'start_post_rel_link' );
   remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
}
add_action('get_header', 'remove_unnecessary_tags');
цитата
15/02/11 в 15:53
 Yacc
pingwin писал:
косячу?

нет

А версия всегда одна - последняя. icon_smile.gif
цитата
15/02/11 в 16:49
 pingwin
ок. может поделишься мыслями насчет плагинов кэширования?
вп-кэш одно время чудил для пользователей ИЕ (показывал кэшированные посты, даже при изменении содержания), hyper cache не так быстр и при 50к на блоге часто дает 404, есть еще плагин делающий php страницы в html - но он не для всех хостингов почему-то (права рута или light httpd все портит) icon_cry.gif, хотя хорош.
что есть хорощего и всеядного в плагинах на данный момент?
цитата
15/02/11 в 17:19
 pingwin
поделюсь фенечкой:
часто в облаке тэгов посты с часто повторяющимися мета-тэгами по дефолту делаются с размером шрифта 22, что "ест" лишнее пространство на странице и уменьшает количество рекламы))
изменить шрифт максимума по дефолту в файле wp-includes/category-template.php - поиск в файле по "wp_tag_cloud" и менять "'largest' => 22" на 16 хотя бы;)
'number' => 45 - меняет количество выводимых тэгов (дефолт 45)
'order' => 'ASC' - сортировка. для ру-блогов с EN-RU тэгами касается в первую очередь: если сортировка тэгов идет не по алфавиту. сначала поставьте DESC, а потом ASC опять. тогда тэги ВСЕ сортануться по алфавиту. (хз с чем таксономия так связана..)

ну и обязаловкой чистить код в темплейтах для уменьшения количества обращений к базе;)
цитата
15/02/11 в 17:31
 Yacc
pingwin писал:
ок. может поделишься мыслями насчет плагинов кэширования?

Поделюсь. Хочешь сделать хорошо - сделай сам. icon_smile.gif
цитата
15/02/11 в 17:35
 pingwin
Yacc писал:
Поделюсь. Хочешь сделать хорошо - сделай сам. icon_smile.gif

пиздец(( дельный совет. игнор за пафос и идиотизм.
Стр. 1, 2, 3, 4, 5  >  последняя »


Эта страница в полной версии