С нами с 29.09.06
Сообщения: 1127
Рейтинг: 1237
|
Добавлено: 04/04/11 в 14:19 |
Как в wordpress сделать такое:
пост сотоит из 3 частей, нужно что бы первая 1 часть выводилась на главной, 2 часть в категориях, 3 часть в самом посте.
частично сделал:
1 часть<!--more--><!--noteaser-->2 часть
в теме (index.php) вывожу <?php the_content(""); ?>
а как со 2 и 3 частями сделать? C меня семок кулек
|
|
|
|
Спасибо всем, кто еще МОЖЕТ!
С нами с 25.07.04
Сообщения: 3875
Рейтинг: 1570
|
Добавлено: 04/04/11 в 14:59 |
Manowar: А в датах и тегах что?
Код: | АНОНС
<!--more-->
<!--noteaser-->
ПОСТ |
АНОНС (авторская редакция) выводится на индексе и в зависим. от шаблона - по поиску, тегам, дате и категории. ПОСТ выводится только в посте.
Разве есть другие тэги и варианты с третьей частью? Самому интересно, пригодилось бы, но думаю это уже доп. кодить нужно.
На всяк. случай (нашел) и для себя тоже Codex WP - Иерархия шаблонов
ПЫСЫ Это случаем не для избежания дублирования? Нашел ссылочку - Дублированный контент на сайте с wordpess убираем плагином evermore
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 04/04/11 в 19:08 |
Когда пишешь пост создавай два поля (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;
} |
|
|
|
|
С нами с 29.09.06
Сообщения: 1127
Рейтинг: 1237
|
Добавлено: 04/04/11 в 19:47 |
photomuza, вот и я думал что врядли так можно сделать...
Тогда вот так объясню: на индексной странице и странице категорий - посты у меня идут анонсами, но мне нужно что бы в индексе выводилось:
1 часть(анонс) до этих тегов <!--more--><!--noteaser--> - с этим все ясно - в посте втавляем <!--more--><!--noteaser--> а в теме выводим <?php the_content(""); ?>
а в категориях мне нужно что бы вывдилось то что после этих тегов <!--more--><!--noteaser--> и желательно тоже в сокращенном варианте т.е. что бы тоже стояло "читать далее" и ссылалось на последнюю часть поста (3 часть), но такое без перекодировке я понял не селаешь... а тогда как сделать хотя бы это - "а в категориях мне нужно что бы вывдилось то что после этих тегов <!--more--><!--noteaser-->" ?
Yacc, можешь поподробнее как создавать эти два поля? и если у меня для вывода катов используется category.php а не archive - код который ты даешь не изменится?
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 04/04/11 в 20:15 |
Цитата: | ...как создавать эти два поля? |
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().
|
|
|
|
С нами с 29.09.06
Сообщения: 1127
Рейтинг: 1237
|
Добавлено: 04/04/11 в 21:18 |
Yacc, спасибо! завтра буду пробовать..
|
|
|
|
С нами с 29.09.06
Сообщения: 1127
Рейтинг: 1237
|
Добавлено: 05/04/11 в 18:07 |
добавил в 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 вставить что то?
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 05/04/11 в 18:54 |
Да, пардон.
В functions.php ещё нужно добавить
Код: | add_filter( 'the_content', 'custom_the_content', 10, 1 ); |
|
|
|
|
С нами с 29.09.06
Сообщения: 1127
Рейтинг: 1237
|
Добавлено: 05/04/11 в 19:13 |
Спасибо бро, за ответы! пока лазил и думал тут нашел проще вариант:
так же создаем поля как ты говорил, а выводим просто
<?php echo (get_post_meta($post->ID, 'home', true)); ?> для домашней
и
<?php echo (get_post_meta($post->ID, 'archive', true)); ?> для катов соответсвенно
а так спасибо - направил на правильное направление!
|
|
|
|