Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Wordpress - вывод разных частей поста
цитата
04/04/11 в 14:19
 Man of war
Как в wordpress сделать такое:
пост сотоит из 3 частей, нужно что бы первая 1 часть выводилась на главной, 2 часть в категориях, 3 часть в самом посте.
частично сделал:
1 часть<!--more--><!--noteaser-->2 часть
в теме (index.php) вывожу <?php the_content(""); ?>

а как со 2 и 3 частями сделать? C меня семок кулек icon_smile.gif
цитата
04/04/11 в 14:59
 photomuza
Manowar: А в датах и тегах что? smail101.gif

Код:
АНОНС

<!--more-->

<!--noteaser-->

ПОСТ

АНОНС (авторская редакция) выводится на индексе и в зависим. от шаблона - по поиску, тегам, дате и категории. ПОСТ выводится только в посте.

Разве есть другие тэги и варианты с третьей частью? Самому интересно, пригодилось бы, но думаю это уже доп. кодить нужно.

На всяк. случай (нашел) и для себя тоже icon_smile.gif Codex WP - Иерархия шаблонов

ПЫСЫ Это случаем не для избежания дублирования? Нашел ссылочку - Дублированный контент на сайте с wordpess убираем плагином evermore
цитата
04/04/11 в 19:08
 Yacc
Когда пишешь пост создавай два поля (custom field) с именами home и archive. В них добавляй контент, который будет показываться на домашней и странице архивов соответственно.

В конец functions.php нужно добавить
Код:
function custom_the_content( $content ) {
   $c = $content;
   if( is_home() || is_front_page() ) {
      $c = get_post_meta( get_the_id(), 'home', true );
   }
   else if( is_archive() ) {
      $c = get_post_meta( get_the_id(), 'archive', true );
   }
   return $c !== '' ? $c : $content;
}
цитата
04/04/11 в 19:47
 Man of war
photomuza, вот и я думал что врядли так можно сделать...
Тогда вот так объясню: на индексной странице и странице категорий - посты у меня идут анонсами, но мне нужно что бы в индексе выводилось:
1 часть(анонс) до этих тегов <!--more--><!--noteaser--> - с этим все ясно - в посте втавляем <!--more--><!--noteaser--> а в теме выводим <?php the_content(""); ?>

а в категориях мне нужно что бы вывдилось то что после этих тегов <!--more--><!--noteaser--> и желательно тоже в сокращенном варианте т.е. что бы тоже стояло "читать далее" и ссылалось на последнюю часть поста (3 часть), но такое без перекодировке я понял не селаешь... а тогда как сделать хотя бы это - "а в категориях мне нужно что бы вывдилось то что после этих тегов <!--more--><!--noteaser-->" ?

Yacc, можешь поподробнее как создавать эти два поля? и если у меня для вывода катов используется category.php а не archive - код который ты даешь не изменится?
цитата
04/04/11 в 20:15
 Yacc
Цитата:
...как создавать эти два поля?


1. Если секции Custom Fields нет, то включи её:




2. Кликай Enter new:




3. Вводи название поля (name) и значение (value) и нажимай Add Custom Field:




4. Готово. Добавь второе поле:



Цитата:
...если у меня для вывода катов используется category.php а не archive - код который ты даешь не изменится?

Не изменится ибо is_archive() == is_category() || is_tag() || is_tax() || is_date().
Если тебе нужны только архивы категорий замени is_archive() на is_category().
цитата
04/04/11 в 21:18
 Man of war
Yacc, спасибо! smail54.gif завтра буду пробовать..
цитата
05/04/11 в 18:07
 Man of war
добавил в functions.php этот код:
Код:

<?php
function custom_the_content( $content ) {
   $c = $content;
   if( is_home() || is_front_page() ) {
      $c = get_post_meta( get_the_id(), 'home', true );
   }
   else if( is_archive() ) {
      $c = get_post_meta( get_the_id(), 'archive', true );
   }
   return $c !== '' ? $c : $content;
}
?>

и добавил поля..
но в не на главной не категориях ничего не выводится..наверно нужно в index.php и category.php вставить что то?
цитата
05/04/11 в 18:54
 Yacc
Да, пардон.

В functions.php ещё нужно добавить

Код:
add_filter( 'the_content', 'custom_the_content', 10, 1 );
цитата
05/04/11 в 19:13
 Man of war
Спасибо бро, за ответы! пока лазил и думал тут нашел проще вариант:
так же создаем поля как ты говорил, а выводим просто
<?php echo (get_post_meta($post->ID, 'home', true)); ?> для домашней
и
<?php echo (get_post_meta($post->ID, 'archive', true)); ?> для катов соответсвенно
а так спасибо - направил на правильное направление!


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