Вопрос по вордпресс, вывод анонса на главной.

1509ert
На сайте с 13.12.2008
Offline
48
2397

Здравствуйте. Нужен совет по вордпресс.

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

Україномовний сайт, перша проба пера і витривалості мого (кошелька) гаманця. Там же і приклади копірайту і рерайту http://koncpekt.org.ua (http://koncpekt.org.ua) по моїй основній роботі
w-builder
На сайте с 24.12.2005
Offline
153
#1

Давайте решать вместе, т.к. у меня такой код вывел только заголовок (или полностью контент сраницы). Хотя (по логике) все сделано почти правильно :) Возможно, если excerpt будет строго прописан - то сработает.

<?php 
$page_id = 2; // 123 should be replaced with a specific Page's id from your site, which you can find by mousing over the link to edit that Page on the Manage Pages admin page. The id will be embedded in the query string of the URL, e.g. page.php?action=edit&post=123.

$page_data = get_page( $page_id ); // You must pass in a variable to the get_page function. If you pass in a value (e.g. get_page ( 123 ); ), Wordpress will generate an error.

$permalink = get_permalink( $page_id );
$title = $page_data->post_title; // Get title
$content = $page_data->post_content; // Get Content

//$excerpt = $page_data->post_excerpt; // Get excerpt - не работает
//$excerpt = apply_filters('the_excerpt', $content); // сделать превью из контента - не работает

?>


<div class="adrand">
<h4>
<a href="<?php echo $permalink; ?>" rel="bookmark" title="<?php echo $title; ?>">
<?php echo $title; ?>
</a>
</h4>

<?php echo $content; ?>
</div>

UPD: Не работают, т.к. у pages не бывает excerpt (по умолчанию). Так что надо пробовать такого типа плагин: http://www.laptoptips.ca/projects/wordpress-excerpt-editor/ . Он добавит возможность прописать excerpt для статических страниц и вывести его.

Привычная кнопка "бабло" (http://www.sape.ru/r.8941d9c141.php) + кнопка "кладбище ГСов с парой хороших площадок" (http://gogetlinks.net/?inv=cj4bru) + Советы по увеличению дохода в РСЯ в 2 раза для партнеров бесплатно (http://profit-project.ru/1256759949)
DkWix
На сайте с 04.11.2007
Offline
75
#2
Он добавит возможность прописать excerpt для статических страниц и вывести его.

А почему бы просто не вывести начало поста, которое обычно и называют анонсом?

Типа echo substr($page_data->post_content, 0, 300);

Либо использовать функцию query_posts в которой указать, что кроме постов нужно выводить страницы типа query_posts( array( 'post_type' => array('post', 'page') ) );

но в таком случае нужно будет дополнительно исключить все страницы из цикла

в общем что-то типа этого


<?php
$id_page = 2; //id страницы
$pages = get_all_page_ids(); //id всех страниц
foreach($pages as $page) { if($page !== $id_page) $newpages[] = $page; } //id всех страниц, кроме той, что нам нужна

query_posts( array( 'post_type' => array('post', 'page'), 'post__not_in' => $newpages ) ); //выводить посты и страницы, исключив все страницы кроме той, что нам нужна

//и далее привычный цикл вывода постов

if ( have_posts() ) : while ( have_posts() ) : the_post();

...

(код не проверял)

w-builder
На сайте с 24.12.2005
Offline
153
#3

Substr - это уже что-то из космоса :)

Цикл "if ( have_posts() ) : while ( have_posts() ) : the_post();" не нужен, т.к. это страницы, а не посты.

1509ert
На сайте с 13.12.2008
Offline
48
#4

Народ, а можно по проще, для ламеров :( таких как я? А то не программисту не понятно ничего.

w-builder
На сайте с 24.12.2005
Offline
153
#5

Скопируйте и вставьте, должно заработать.

<?php 

$page_id = 2; // 123 should be replaced with a specific Page's id from your site, which you can find by mousing over the link to edit that Page on the Manage Pages admin page. The id will be embedded in the query string of the URL, e.g. page.php?action=edit&post=123.

$page_data = get_page( $page_id ); // You must pass in a variable to the get_page function. If you pass in a value (e.g. get_page ( 123 ); ), Wordpress will generate an error.

$permalink = get_permalink( $page_id );
$title = $page_data->post_title; // Get title
$content = $page_data->post_content; // Get Content

$excerpt = mb_substr($page_data->post_content, 0, 300); // Get excerpt - не работает

?>


<div class="adrand">
<h4>
<a href="<?php echo $permalink; ?>" rel="bookmark" title="<?php echo $title; ?>">
<?php echo $title; ?>
</a>
</h4>

<?php echo $excerpt; ?>
</div>

Если вообще ничего не понятно, не работает и страшно - ищите плагин :)

DkWix
На сайте с 04.11.2007
Offline
75
#6
w-builder:
Substr - это уже что-то из космоса :)

Цикл "if ( have_posts() ) : while ( have_posts() ) : the_post();" не нужен, т.к. это страницы, а не посты.

Топикстартеру нужно вывести анонс статической страницы на главную

Вот я и предложил 2 варианта

1) если надо вывести в самом начале - ваш вариант + substr($page_data->post_content, 0, 300);

2) если надо вывести в цикле вывода постов

$id_page = 2; //id страницы
$pages = get_all_page_ids(); //id всех страниц
foreach($pages as $page) { if($page !== $id_page) $newpages[] = $page; } //id всех страниц, кроме той, что нам нужна

query_posts( array( 'post_type' => array('post', 'page'), 'post__not_in' => $newpages ) ); //выводить посты и страницы, исключив все страницы кроме той, что нам нужна

перед

if ( have_posts() ) : while ( have_posts() ) : the_post();

в файле index.php

(ТС, теперь всё понятно? А для ограничения на количество символов вставьте в тело страницы тег <!--more--> )

В чём разница между mb_substr и substr, кроме дополнительной писанины? (гуглил, ничего интересного не нагуглил)

w-builder
На сайте с 24.12.2005
Offline
153
#7
DkWix:
В чём разница между mb_substr и substr, кроме дополнительной писанины? (гуглил, ничего интересного не нагуглил)

Правильное разрывание текстов (отсутствие "ромбиков с вопросиками") в УТФ-8, что, с вероятностю 96.14%, случай ТС.

Кстати, насчет синтаксиса mb_substr не уверен :)

DkWix
На сайте с 04.11.2007
Offline
75
#8
w-builder:
Правильное разрывание текстов (отсутствие "ромбиков с вопросиками") в УТФ-8, что, с вероятностю 96.14%, случай ТС.

Кстати, насчет синтаксиса mb_substr не уверен :)

Спасибо

UPD: Не работают, т.к. у pages не бывает excerpt (по умолчанию). Так что надо пробовать такого типа плагин

А если надо уникальный анонс, то не проще ли заюзать дополнительные поля, вместо установки доп. плагинов?

1509ert
На сайте с 13.12.2008
Offline
48
#9

Спасибо всем кто ответил. Сейчас иду пробовать. Отпишу, о том что получится, уже к вечеру понедельника. Еще раз всем спасибо за помощь

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий