Вывод записей определенной рубрики в любом месте

Иногда нужно вывести записи вне основного цикла theeLoop. Обычно это делается с помощью query_posts. Проблема в том, что WordPress использует глобальные переменные, и после использования этой функции, условия query_posts станут глобальными.

Чтобы этого избежать, нужно использовать функцию get_posts. Например, мы хотим вывести в сайдбаре список последних записей в рубрике новости (id=1):

<h2 class="pages_search">Новости</h2>
<ul class="is_kat">
<?php
$posts_new = get_posts('category=1&numberposts=3');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>
</ul>

То есть мы получаем все записи с нужным нам условием get_posts(‘category=1&numberposts=3’) в объект $posts_new. Далее, мы просто обходим его в цикле и выводим нужные нам записи.

а как сделать чтобы в заголовках определённое количество символов выводилось?
и что нужно убрать чтобы не выводилась дата?

чтоб не выводилась дата, уберите строчку

echo mysql2date('j.m.Y',  $post_new->post_date);

А как с помощью этого вывести определенную страницу. Нигде не нашел переметров get_post.

А как вывести все посты из всех категорий?!

Как вывести посты из всех категорий разобрался просто заменил код

$posts_new = get_posts('category=1&numberposts=3');

на этот:

$posts_new = get_posts('');

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

Подскажите что делать!!!

Как вывести посты из всех категорий разобрался просто заменил код
$posts_new = get_posts('category=1&numberposts=3');

на этот:

$posts_new = get_posts('');

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

Тоже это интересуте, но только надо не полный пост, а только кусок. (excerpt)

echo wpautop($post_new->post_content);
echo wpautop($post_new->post_content);

Но так выводятся полные записи, а как сделать чтобы было только до <–more–> или ещё лучше, только Х слов/символов 🙂

В этом случае довольно много кода получается. В общем см. функцию get_the_content() – там подобное решение.

Чёт ничего хорошего на офф. сайте не нашёл 🙁

Подскажите плз где неправильно. Нужно чтобы выводилась page с id=33, а выводятся все.

 <?php
$posts_new = get_pages('');
foreach ($posts_new as $post_new) :
if ($id=33)
{
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    
    echo $post_new->post_content;
    echo '</a></li>';
    }  
endforeach;  
 
?>

Спасибо огромное.

А возможно ли вывести из всех постов кроме одного?
Напрокатило ))

$posts_new = get_posts('("cat=-8")&numberposts=15');

И это не помогло ))

$posts_new = get_posts('category=-8&numberposts=3');

Просто экспериментировал а как правильно сделать не понял. Подскажите если кто знает

Да и вообще если я ввожу

$posts_new = get_posts('category=1&numberposts=3');

то получается пусто.

Почитай то что делал я, вроде получилось.
http://forum.maxsite.org/viewtopic.php?id=577

а с датой как? плагин русских дат при таком вызове не рабоатет как я понимаю..

Люди, так кто-нибудь разобрался как выводиться до more/noteaser? Очень надо 🙁

Добрый день!

Я то же столкнулась с тем, что необходимо вывести записи определенной рубрики в на определенной странице. Вопрос вот в чем: где разместить вышеуказанный код, чтобы вывод записей из определенной рублики шел на определенную! страницу. Проблема в том, что, (если я правильно поняла) каждая страница имеет свой собственный номер, в соответствии с которым заполняется контентом, на каждую страницу отдельные шаблоны не создаются – где и как прописать код МАХ’а, чтобы записи появились на странице с таким-то номером и как узнать &#1237;тот номер?

Спасибо заранее!

Проблема в том, что, (если я правильно поняла) каждая страница имеет свой собственный номер,

Проблема в том, что Вы не до конца поняли, кто есть кто. 🙂
Страница-то как раз может иметь персональный шаблон.
У страниц и постов есть ID, видимо его Вы и называете номером, это переменная $post->ID.

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

Еще добавлю утверждение, что при этом все циклы и условия удаляются, т.е. <?php if have_posts…?> и соотв. <?php endif; ?> + <?php while have_posts… ?> и <?php endwhile; ?>

А как сделать чтобы они в алфавитном порядке шли ?

а кодекс почитать =)

В этом случае довольно много кода получается. В общем см. функцию get_the_content() - там подобное решение.

в кодексе не нашел…
я так понял, что в post-template.php надо смотреть – там я нашел функцию get_the_content, а что делать с ней не понятно, хотелось бы чтобы выводился пост до тега <!–more–>…

я так понял, что в post-template.php надо смотреть - там я нашел функцию get_the_content, а что делать с ней не понятно, хотелось бы чтобы выводился пост до тега <!--more-->...

В этой функции нужно смотреть, как сделано, "чтобы выводился пост до тега <!–more–>". И сделать то же самое.

[quote=walaby]я так понял, что в post-template.php надо смотреть - там я нашел функцию get_the_content, а что делать с ней не понятно, хотелось бы чтобы выводился пост до тега <!--more-->...

В этой функции нужно смотреть, как сделано, "чтобы выводился пост до тега <!–more–>". И сделать то же самое.[/quote]
я посмотрел, составил код, но он убирает весь пост. Суть, насколько я понял, состоит в том, чтобы внутри foreach создать функцию наподобие get_the_content, в своем случае я сделал post_content_2 в нее вставил (поначалу части вставлял, а потом и все вставил) тело функции и в конце написал echo wpautop($post_new->post_content_2);. Ничего не вышло – весь пост исчез….
вот код:

                <?php
                $posts_new = get_posts('category=7&numberposts=2');

                foreach ($posts_new as $post_new) :
                    echo '<li><h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2></li>';
                    echo '<div class="post">';
                    //НАЧИНАЕТСЯ ФУНКЦИЯ
                    function post_content_2($more_link_text = 'Далее...', $stripteaser = 0, $more_file = '') {
                    global $id, $post, $more, $single, $withcomments, $page, $pages, $multipage, $numpages;
                    global $preview;
                    global $pagenow;
                    $output = '';

                    if ( $more_file != '' )
                        $file = $more_file;
                    else
                        $file = $pagenow; //$_SERVER['PHP_SELF'];
                
                    if ( $page > count($pages) ) // if the requested page doesn't exist
                        $page = count($pages); // give them the highest numbered page that DOES exist


                    $content = $pages[$page-1];
                    if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
                        $content = explode($matches[0], $content, 2);
                        if ( !empty($matches[1]) && !empty($more_link_text) )
                            $more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
                    } else {
                        $content = array($content);
                    }
                    if ( (false !== strpos($post->post_content, '<!--noteaser-->') && ((!$multipage) || ($page==1))) )
                        $stripteaser = 1;
                    $teaser = $content[0];
                    if ( ($more) && ($stripteaser) )
                        $teaser = '';
                    $output .= $teaser;
                    if ( count($content) > 1 ) {
                        if ( $more ) {
                            $output .= '<span id="more-'.$id.'"></span>'.$content[1];
                        } else {
                            $output = balanceTags($output);
                            if ( ! empty($more_link_text) )
                                $output .= ' <a href="'. get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>";
                        }
                
                    }
                    }
                                        //КОНЧАЕТСЯ ФУНКЦИЯ
                    echo wpautop($post_new->post_content_2);
                    echo '</div>';
                endforeach;
                ?>

MAX, Ю.Б., sonika, $MEPTHuk и другие умные люди!
Разве не знаете как по данной технологии сделать вывод до тега <!–more–> ?
Я уже все перепробовал…

Мультик помните? "Вы и есть за меня будете?" – "Ага!". 😀

<?php
                $posts_new = get_posts('category=7&numberposts=2');

                foreach ($posts_new as $post_new) :
                    echo '<li><h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2></li>';
                    echo '<div class="post">';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) )
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                    echo '</div>';
                endforeach;
                ?>

да, было, мультик "В стране невыученных уроков"))

СУПЕР!!!
Спасибо, Ю.Б.!!:D

Код выше, вместо "паузы". Я сначала вслепую написал, потом что-то сработало в голове – и я решил убрать код и проверить код обрезания.

вобщем ОГРОМНОЕ СПАСИБО!

Огромное пожалуйста! Очень надеюсь, что ковыряние в кодах пошло Вам на пользу. 😉

А как вывести не только из категори, но из подкатегорий для которых эта категория явлется родительской!?

category=НОМЕР_РОДИТЕЛЯ&category=НОМЕР_ПОДКАТЕГОРИИ

вроде так..

category=НОМЕР_РОДИТЕЛЯ&category=НОМЕР_ПОДКАТЕГОРИИ

вроде так..

в чем смысл этой записи???
Ты таким макаром выведешь только запись из той категории которую назвал "НОМЕР_ПОДКАТЕГОРИИ".

Есть категория, содержащая кучу дочерних категорий, как вывести записи из этих дочек!

мда.
зайди по адресу http://www.ТВОЙ_ДОМЕН/wp-admin/categories.php – там ты увидишь НОМЕРА (ID) всех категорий и подкатегорий (она обозначена как РОДИТЕЛЬ – ПОДКАТЕГОРИЯ, если не ясно). соответственно через знак амперсанда ты можешь группировать разные категории, насколько я понял – в твоем случае это РОДИТЕЛЬ+ЕГО_ПОДКАТЕГОРИИ.

мда.
зайди по адресу http://www.ТВОЙ_ДОМЕН/wp-admin/categories.php - там ты увидишь НОМЕРА (ID) всех категорий и подкатегорий (она обозначена как РОДИТЕЛЬ - ПОДКАТЕГОРИЯ, если не ясно). соответственно через знак амперсанда ты можешь группировать разные категории, насколько я понял - в твоем случае это РОДИТЕЛЬ+ЕГО_ПОДКАТЕГОРИИ.

не пойму все равно….

записи вывожу так

<?php
$posts_new = get_posts('category=1&numberposts=10');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>

category=1 – это и есть родитель.

как запись будет выглдеть по твоему рецепту если category=2, category=3…..category=15 -дочерние категории???

<?php
$posts_new = get_posts('category=1&category=2&category=3&category=4&category=5&category=125&numberposts=10');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>
<?php
$posts_new = get_posts('category=1&category=2&category=3&category=4&category=5&category=125&numberposts=10');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>

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

это что такое?
$posts_new = get_posts(‘category=1&category=2&category=3&category=4&category=5&category=125&numberposts=10’);
категории так перечисляются:
$posts_new = get_posts(‘category=1,2,3,4,5,125&numberposts=10’);

это что такое?
$posts_new = get_posts('category=1&category=2&category=3&category=4&category=5&category=125&numberposts=10');
категории так перечисляются:
$posts_new = get_posts('category=1,2,3,4,5,125&numberposts=10');

вот и я том же!

Но и так не работает…выводяться только заголовки записей последней указанной категори!

Неужели нет рецепта, в котором можно обойтись указанием только родительской рубрики!

Да я уже и готов перечисдить все рубрики вывод из которых мне нужен…только КАК?????

И не будет работать. В get_posts() не предусмотрено использование нескольких категорий: или все, или одна.

Что делать? Вместо get_posts() использовать $wpdb->get_results() с query, похожей на ту, что формирует функция, но вместо term_id= использовать term_id in.

http://maxsite.org/vyivod-poslednih-zapisey

попробую вечером

может лучше query_posts?
http://codex.wordpress.org/Template_Tags/query_posts

И не будет работать. В get_posts() не предусмотрено использование нескольких категорий: или все, или одна.

Что делать? Вместо get_posts() использовать $wpdb->get_results() с query, похожей на ту, что формирует функция, но вместо term_id= использовать term_id in.

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

include_once('wp-config.php');
include_once('wp-includes/wp-db.php');

Те инклюды вставить бы тому, кто… ладно, не важно. Оно даже для использования выборки вне Вордпресса – занадто, а внутри – и подавно.

Ну так лениво собирать SQL-запрос. А совет от Сони не сработал?

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

То есть получаеться что если пользоватьсяся советом Сони, то задача сводиться к тому, как исправить это код

<?php
$posts_new = query_posts('cat=3');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>

что бы он не выводил на странице содержимое категорий. а выводил только пермалинки….на сколько моего ума хватает…так оно и должно быть…но нет…он выводит и пермалинки и сами посты…

А что, у Вас сайдбар проигрывается ДО основного цикла страницы?

Так вот не программер я! О пхп имею лишь поверхностное представление! Код слизал отсюдо же с форума!
В общем буду рад если подскажите что как исправить и как он должен выглядеть, в смысле код! да и мало ли…может кому еще понадобится такое!

Подождите, при чем тут ЭТОТ код, если на странице выводится что-то не то? Я спрашиваю, гда выводится сайдбар, до основного цикла или после? По разному бывает, есть темы, в которых левый сайдбар выводится до, есть темы, в которых оба сайдбара – после. Если в Вашем случае сайдбар выводится до, то нужно сохранять основную кверь ($qq = $query_string) перед выводом сайдбара, а после вертать взад (query_posts($qq)) . Иначе основной цикл просто будет дублировать выборку сайдбара.

:))))
так и было! Спасибо огромное все заработало!

Мультик помните? "Вы и есть за меня будете?" - "Ага!". :D

<?php
                $posts_new = get_posts('category=7&numberposts=2');

                foreach ($posts_new as $post_new) :
                    echo '<li><h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2></li>';
                    echo '<div class="post">';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) )
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                    echo '</div>';
                endforeach;
                ?>

Здесь запись выводится до <!–more–!>. А все что после…обрезаеться и выбрасывается? Как дабавиться ссылку "читать дале"..и вывод поста полностью?!

Мне придумалась вот такая реализация…только я не знаю на сколько это правильно…

<?php
                $posts_new = get_posts('category=2&numberposts=2');

                foreach ($posts_new as $post_new) :
                    echo '<li><h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2></li>';
                    echo '<div class="post">';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) )
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                     echo '<a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo 'Читать полностью...';
                    echo '</a>';
                    echo '</div>';
                endforeach;
                ?>

Папробуй мой вариант! Проверено, работает. 🙂

<?php
           $posts_new = get_posts('category=&numberposts=1');

           foreach ($posts_new as $post_new) :
                    echo '<h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2>';        
                    echo '<div>';
                    echo '<p>';

                    echo the_excerpt();     
                    echo '</p>';
                    echo '</div>';
                endforeach;
?>

Данный вариант выводит новую запись до точки.

Если заменить

the_excerpt();

на

$post_new->post_content;

то будет выводить запись полностью.

у меня посты отображаются от последнего к первому, т.е. самый последний – самый первый. на странице 10 постов. воспользовался этим:
<?php
$posts_new = get_posts(‘category=1&numberposts=3’);
foreach ($posts_new as $post_new) :
echo ‘<li class="news_item"><a href="’;
echo get_permalink($post_new->ID);
echo ‘">’;
echo ‘ – ‘;
echo $post_new->post_title;
echo ‘</a></li>’;
endforeach;
?>

а как сделать чтобы в сайдбаре отображались посты начиная с после 10, т.е. те которые на главной не видны и начинаются со второй страницы?

<?php
$posts_new = get_posts('category=1&numberposts=3&offset=10');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="';
    echo get_permalink($post_new->ID);
    echo '">';
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;   
?>

Подскажите а как сделать чтоб нужная страница в сайтбаре полностью с картинками отображалась.
Спасибо очень надо

завтра кину функцию…

спасибо жду очень надо

Ниже идет сначала функция, потом вывод. Эту функцию можно запихнуть в файл functions.php в папке wp-includes:

<?php
function announce($text, $announce_length = 120)
{
 $text = trim(strip_tags($text, '<br>'));
 if (!$text) return;
 $a = preg_split('/ +/', $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
 $ret = '';
 foreach ($a as $val)
 {
  if ($val[1] + strlen($val[0]) >= $announce_length) break;
  $ret .= (' '.$val[0]);
 }
 return $ret.(strlen($ret)<strlen($text)?'...<b>&raquo;</b>':'');
}


$posts = get_posts('category=ID_ВАШЕЙ_КАТЕГОРИИ&numberposts=СКОЛЬКО_ХОТИТЕ_ВЫВОДИТЬ_ПОСТОВ');
foreach ($posts as $post):
echo '<li><a href="';
echo get_permalink($post->ID);
echo '">';
echo $post->post_title;
echo '</a></li>';
echo '<p>';
echo announce($post->post_content, ЧИСЛО_СИМВОЛОВ_ПРЕВЬЮ_НОВОСТИ);
echo '</p>';
endforeach;
?>

Спасибо сделал заработало но это немного не то что мне надо было
он выводит пост в сайтбар
а мне нужно чтоб выводил содержимое страницы

вот код нашёл выше но он выводит все страници вподрят а не ту какую указываешь помогите пожалуйста его подправить

<?php
$posts_new = get_pages('');
foreach ($posts_new as $post_new) :
if ($id=33)
{
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    
    echo $post_new->post_content;
    echo '</a></li>';
    }  
endforeach;  
 
?>

мне это надо для решения этой задачи http://forum.maxsite.org/viewtopic.php?id=4812

Как сделать в WordPress MU вывод постов определенной рубрики и определенного блога на главной странице.
Заранее спасибо.

Мультик помните? "Вы и есть за меня будете?" - "Ага!". :D

<?php
                $posts_new = get_posts('category=7&numberposts=2');

                foreach ($posts_new as $post_new) :
                    echo '<li><h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2></li>';
                    echo '<div class="post">';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) )
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                    echo '</div>';
                endforeach;
                ?>

что-то не нашел в кодексах, как вывести пост с конкретным айди. есть переменная $include, но я так понял, что если задать в виде

$posts_new = get_posts('$include=1');

то оно выведет все посты плюс пост с айди 1.
а нету случайно функции get_posT ? 🙂

Клиника 🙂

http://codex.wordpress.org/Function_Reference/get_post

Клиника :)

http://codex.wordpress.org/Function_Reference/get_post

Да уж!
Ну извините, я же только начинаю, но, как видите, интуиция подсказывала правильно )))) :lol::D
Спасибо!

Не, видать, я тупой. Ю.Б., не были бы Вы настолько любезны чтобы привести пример для get_post в том же стиле, что и для get_posts, а то у меня код с кодекстов чего-то не срабатывает…

Ну извините, я же только начинаю

Что явственно видно из даты регистрации на этом форуме 😆

Извините, кода кроме как с Кодекса у меня нет. Вы передрали один в один или оптимизировали до get_post(7)?

Только что впер код с Кодекса

<?php
$my_id = 7;
$post_id_7 = get_post($my_id); 
echo $post_id_7->post_title;
?>

в category-3.php – замечательно выводит заголовок.

get_post(7) работать не будет. синтаксис неправильный, так?
а вот с
<?php
$my_id = 7;
$post_id_7 = get_post($my_id);
$title = $post_id_7->post_title;
?>

вообще непонятно. я смог прочитать, что нельзя вставлять айдти напрямую, а только через переменную. в данном случае это $my_id
тогда зачем семерка фигуриет в названии $post_id_7 ?
и вообще, самое интересное, что данный код ни то что не показывает ничего, он даже не вдает никакой ошибки…
я понимаю, что мои перлы с точки зрения человека, знающего php выглядят смешно, но с get_posts как-то все было более понятно )))

$post_id_7 – это имя переменной, можете ее назвать $_sobaka_zlaya_ne_privyazannaya, это без разницы.

А не показывает потому, что в Вашем коде нет ни одного вывода, только присвоения.

Ну потратьте на изучение основ php несколько часов – они окупятся с лихвой.

Да я трачу, только потихоньку 🙂 спасибо! я уже вспомнил ваш пример с get_posts, где были операторы echo и, кажется, понял, в чем суть. Спасибо!

Нет, все-таки прикольно учится уже по ходу, изучая теорию после неудачных попыток освоить практику 😆 Ибо нельзя взять выучить книгу и сразу сесть и программировать 😆
Короче, пощу как записку для себя, да и другим может пригодится (если что не так или можно как то оптимизировать, поправьте, плз)

<?php
// создаем переменную, в которой указываем номер нужного нам поста
$odyn_post_id = 2;

// создаем переменную, которая запрашивает пост с указанным id
$thys_post_id = get_post($odyn_post_id); 

// cоздаем переменную, которая формирует заголовок поста указанного id
$zagolovok = $thys_post_id->post_title;

//выводим заголовок поста с заданным id
echo '<br><h2>';
echo $zagolovok;
echo '</h2>';

?>

Это выведет заголовок записи с айди номер два.
Для того, чтобы вывести прочие артибуты поста (дата, ссылка, сам пост) идем на http://codex.wordpress.org/Function_Reference/get_post
и прописываем формирование и вывод подобно тому, как мы проделали это с $zagolovok

Все правильно?

<?php
                $posts_new = get_posts('category=7&numberposts=2');

                foreach ($posts_new as $post_new) :
                    echo '<li><h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2></li>';
                    echo '<div class="post">';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) )
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                    echo '</div>';
                endforeach;
                ?>

А можно как-то задать ограниченный вывод слов либо символов в тексте поста? Что бы у всех сообщений на ленте было одинаковое кол-во слов/символов?
Либо же лучше воспользоваться post_excerpt?

а можно ли как нибудь автоматически получить ID последнего добавленного поста?

а можно ли как нибудь автоматически получить ID последнего добавленного поста?

get_posts(‘numberposts=1‘)

Здравствуйте! А меня вот интересует вот такая тема.

Можно ли в этом коде вывести к каждому посту еще количество комментариев в скобках?

например:

пост1 (кол-во комментариев ввиде линка на комментарии)
пост2 (кол-во комментариев ввиде линка на комментарии)
пост3 (кол-во комментариев ввиде линка на комментарии)

Буду очень признателен за ответ.
Заранее благодарен.

Мой код:

<?php
$posts_new = get_posts(‘category=xx&numberposts=3’);

foreach ($posts_new as $post_new) :
echo ‘<a href="’;
echo get_permalink($post_new->ID);
echo ‘">’;
echo $post_new->post_title;
echo ‘</a>’;
echo the_excerpt();
endforeach;
?>

echo ‘ (‘.$post_new->comment_count.’)’; в нужное место.

Здравствуйте.
Я вывожу записи на главной в несколько колонок, вместо стандартного цикла использую циклы

<?php
           $posts_new = get_posts('category=&numberposts=1');

           foreach ($posts_new as $post_new) :
                    echo '<h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h2>';        
                    echo '<div>';
                    echo '<p>';

                    echo the_excerpt();     
                    echo '</p>';
                    echo '</div>';
                endforeach;
?>

Подскажите, как сделать вывод рубрики, в которой опубликован пост? Пытался так,

        echo '<div class="meta"><b>Рубрика:</b>';
         the_category(',');

но тогда просто выводятся списком все рубрики, независимо от того, принадлежит ли им этот пост.

что именно тебе нужно вывести? ссылку на ОПРЕДЕЛЕННУЮ категорию по ее ID?

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

echo  mysql2date('j.m.Y',  $post_new->post_date);

как должны выглядеть запросы, которые выведут рубрики и теги этого поста?
Запрос вида

echo the_category(',');

в вышеприведенном цикле выводит 1 рубрику, независимо от того относится к ней запись или нет.

Удалено. Разобрался

Здравствуйте! qet_posts в меню, новые посты оттодвигают (смещают) старые, а как сделать наоборот, что бы новый пост после старого(предыдущего) шел ?

get_posts(‘order=ASC&orderby=date’);
http://codex.wordpress.org/Template_Tags/get_posts

Спасибо большое!

Здравствуйте.
Свежие записи выводятся с помощью виджета-"свежие записи". В настройках тоже стоит-"Отображать анонс". И все равно показываются только названия, хотя поля цитаты я заполняю. Как это исправить? как выводить анонс (цитату)?
Сайд бар:

    <div id="back">
    <?php if (isset($_SERVER["HTTP_REFERER"])) { ?>
        <span>&laquo; <a href="<?php echo $_SERVER['HTTP_REFERER'];?>" title="go back">вернуться</a></span>
    <?php } ?>
        <a href="#documentContent" title="к содержанию">к содержанию</a> &raquo;</div>
    </div>
</div>

<div id="column2">
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('Левая колонка') ) : else : ?>

<?php /* Adsense is disabled. Uncomment and fill in your details (ad_client_number) if you want to use it.
    <ul><li class="listHeader"><h3><?php _e('Advertising'); ?></h3></li>
        <li class="adsense">
    <script type="text/javascript"><!--
        google_ad_client = "pub-edit-this-number";
        google_ad_width = 160;
        google_ad_height = 600;
        google_ad_format = "160x600_as";
        google_ad_type = "text_image";
        google_ad_channel ="";
        google_color_border = "FFFBFF";
        google_color_bg = "FFFBFF";
        google_color_link = "663300";
        google_color_url = "BB8800";
        google_color_text = "999999"; //--></script>
    <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script></li></ul>
*/ ?>


<?php /* Author information is disabled per default. Uncomment and fill in your details if you want to use it.
    <ul><li class="listHeader"><h2><?php _e('Автор'); ?></h2></li>
        <li><p>Немного обо мне. Совсем немного, правда</p></li>
    </ul>
*/ ?>

    <ul><li class="listHeader"><h2><?php _e('Календарь'); ?></h2></li>
        <li class="calendar"><?php get_newcalendar() ?></li>
    </ul>

    <ul><li class="listHeader"><h2><?php _e('Архив'); ?></h2></li>
        <?php wp_get_archives('type=monthly'); ?>
    </ul>

    <ul><li class="listHeader"><h2><?php _e('Рубрики'); ?></h2></li>
        <?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0'); ?>
    </ul>

<?php endif; ?>
</div>

<div id="column3">
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('Правая колонка') ) : else : ?>

    <ul class="icons"><li class="listHeader"><h2><?php _e('Подписка'); ?></h2></li>
        <li><a href="<?php bloginfo('rss2_url'); ?>" title="Posts RSS feed" class="iconrss">rss-лента</a></li>
        <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="Posts RSS feed" class="iconrss">комментарии в rss</a></li>
    </ul>


<?php if (is_single()) { ?>
    <ul class="icons"><li class="listHeader"><h2><?php _e('В закладки'); ?></h2></li>
        <li><a class="s_delicious" href="http://del.icio.us/post?title=<?php the_title(); ?>&amp;url=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to del.icio.us" rel="nofollow">delicious</a></li>
        <li><a class="s_digg" href="http://digg.com/submit?phase=2&amp;title=<?php the_title(); ?>&amp;url=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to digg" rel="nofollow">digg</a></li>
        <li><a class="s_technorati" href="http://www.technorati.com/faves?add=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to technorati" rel="nofollow">technorati</a></li>
        <li><a class="s_reddit" href="http://reddit.com/submit?title=<?php the_title(); ?>&amp;url=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to reddit" rel="nofollow">reddit</a></li>
        <li><a class="s_magnolia" href="http://ma.gnolia.com/beta/bookmarklet/add?title=<?php the_title(); ?>&amp;description=<?php the_title(); ?>&amp;url=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to magnolia" rel="nofollow">magnolia</a></li>
        <li><a class="s_stumbleupon" href="http://www.stumbleupon.com/submit?title=<?php the_title(); ?>&amp;url=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to stumbleupon" rel="nofollow">stumbleupon</a></li>
        <li><a class="s_yahoo" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?title=<?php the_title(); ?>&amp;popup=true&amp;u=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to yahoo bookmarks" rel="nofollow">yahoo</a></li>
        <li><a class="s_google" href="http://www.google.com/bookmarks/mark?op=add&amp;title=<?php the_title(); ?>&amp;bkmk=<?php echo get_permalink() ?>" title="Submit <?php the_title(); ?> to google bookmarks" rel="nofollow">google</a></li>
    </ul>
<?php } ?>

    <ul><li class="listHeader"><h2><?php _e('Свежие записи'); ?></h2></li>
        <?php wp_get_archives('type=postbypost&limit=10'); ?>
    </ul>

    <ul><li class="listHeader"><h2><?php _e('Друзья'); ?></h2></li>
        <?php wp_get_linksbyname('Blogroll', 'before=<li>&after=</li>&orderby=name&show_description=0&show_updated=1') ?>
    </ul>

    <ul><li class="listHeader"><h2>Мета</h2></li>
        <?php wp_register(); ?>
        <li><?php wp_loginout(); ?></li>
        <li><a href="http://validator.w3.org/check/referer" title="Hopefully this page validates as XHTML 1.0 Strict">Корректный <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a></li>
        <li><a href="http://jigsaw.w3.org/css-validator/check/referer" title="Valid CSS">Valid CSS</a></li>
        <li><a href="http://gmpg.org/xfn/"><abbr title="XHTML Friends Network">XFN</abbr></a></li>
        <li><a href="http://wordpress.org/" title="Работает на WordPress - современной системе персональных публикаций.">WordPress</a></li>
        <?php wp_meta(); ?>
    </ul>

<?php endif; ?>
<?php
// mainlink
include_once($_SERVER['DOCUMENT_ROOT']."/_ml/ML.php");
$ml->ml_cfg[charset]='utf';
if($_SERVER['REQUEST_URI']=='/') echo $ml->MainLink();
else echo $ml->MainLink_Second();
if($ml->ml_cfg['debugmode']) echo $ml->ml_cfg['debug_info'];
// !mainlink     
?>

        </ul>

</div>

Может вот тут исправить что-то:

<ul><li class="listHeader"><h2><?php _e('Свежие записи'); ?></h2></li>
        <?php wp_get_archives('type=postbypost&limit=10'); ?>
    </ul>

Сайт- [url]avtopomosh.ru[/url]

elena0602, топик читать с начала не пробовали?!

elena0602, топик читать с начала не пробовали?!

Пробовала, но не поняла.:) Где все же менять код надо?

Спасибо огромное за советы!
Но вот проблемка. С помощью первого примера в этом форуме я вывел на странице посты с содержимым из определенной рубрики (через присвоение странице шаблона, в котором находится PHP-код). Но так как было сказано, что WordPress использует глобальные переменные, видимо поэтому не хочет работать плагин "wp_pagenavi". Как заставить работать на странице навигацию? Спасибо.

Что бы Вы не загоняли в шаблон страницы, она останется для движка одиночной страницей, а потому pagenavi там делать просто нечего. Что делать? Использовать инструмент по назначению.

Багровость Филиппа Филипповича приняла несколько сероватый оттенок.
     - В  спальне  принимать  пищу,  -  заговорил  он  слегка  придушенным
голосом, - в смотровой читать, в приемной одеваться, оперировать в комнате
прислуги, а в столовой осматривать. Очень возможно,  что  Айседора  Дункан
так и делает. Может быть, она в  кабинете  обедает,  а  кроликов  режет  в
ванной. Может быть. Но я не  Айседора  Дункан!..  -  вдруг  рявкнул  он  и
багровость его стала желтой. - Я буду обедать в столовой, а оперировать  в
операционной!  Передайте  это  общему  собранию  и  покорнейше  вас  прошу
вернуться к вашим делам, а мне предоставить возможность принять пищу  там,
где ее принимают все нормальные люди, то-есть в столовой, а не в  передней
и не в детской.

А каким образом можно вывести категории поста?
А то у меня то 0 получается, то только категория Новости (ID1), то Array…

И еще как можно вывети теги этим способом?

Вся необходимая информация тут: http://codex.wordpress.org/Template_Tags

Ю.Б., да там и роюсь, но увы ничего не подходит… пробовал так к примеру:

echo $post_new->post_category; – выводит 0… другие разные варианты, то ошибка, то Array…

<?php
foreach((get_the_category($post_new->ID)) as $category) {
echo $category->cat_name . ‘ ‘;
}
?>

Ю.Б., Вы просто гений!
А можно ли еще ее ссылкой сделать? И вывести теги таким образом?

Кто-то тут спрашивал как сделать "читать далее" если есть more

Я покурил этот топик и написал такое:

<?php
                $posts_new = get_posts('category=1&numberposts=1');

                foreach ($posts_new as $post_new) :
                    echo '<div class="post_content">';
                    echo '<h2>'; 
                    echo $post_new->post_title;
                    echo '</h2>';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) ){
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                    echo '<br/><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo 'Читать далее...';
                    echo '</a>';
                    echo '</div>';
}
                    
                    else {
                    echo $post_new->post_content;
                    echo '</div>';
}

                endforeach;
                ?>

Не знаю насколько коряво – не могу оценить, но работает.
Спасибо Ю.Б. за подсказки в теме.

А можно ли вывести на страничку все посты просмотренные пользователем (значения берутся из базы)
в таком виде :
названия постов, их id и плагин WP-PostRatings чтобы была возможность голосовать за посты на этой страничке.

вот до чего домедитировал сам :

foreach($posts as $postnew)
{
if($postnew)
{
$post_new = get_post($postnew);
$title = $post_new->post_title;
echo $post_new->post_title;
if(function_exists(‘the_ratings’)) { the_ratings(div,$id=$postnew); }
}
}

Выводятся результаты голосования, но проголосовать нельзя.

В оригинале должно быть —
if(function_exists(‘the_ratings’)) { the_ratings();}
Но так не выводятся результаты.

Разобрался. Все правильно делал.. Что-то с джаваскриптом плагина было, перезалил и все заработало.

Как вывести записи в сайдбаре понятно и как вывести записи из определённой категории понятно, но как сделать чтобы выводился заголовок записи, а перед ним первая картинка из поста? Например, как это реализовано на mama.ru в левой колонке МедНовости.

я сделаю для сайта вашего эту вещь, я же взялся за это=)
ЗЫ: это Игорь=)

я сделаю для сайта вашего эту вещь, я же взялся за это=)
ЗЫ: это Игорь=)

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

Можно ли сделать так, чтобы на странице выводились все записи определённой категории, но не одним листом, а с нижней навигацией (например, "Предыдущие 10 записей")? То есть разбить простыню на несколько приемлемых по длине страничек.

Моё "можно ли" нужно понимать как просьбу какому-нибудь знающему человеку выложить готовое решение. 🙂 Если несложно, конечно.
Буду очень признателен. Потому что сам пока не в силах решать такие задачи.

Можно ли сделать так, чтобы на странице выводились все записи определённой категории, но не одним листом, а с нижней навигацией (например, "Предыдущие 10 записей")? То есть разбить простыню на несколько приемлемых по длине страничек.

ну и смысл какой?
записи определённой категории … с нижней навигацией — это собственно страничка этой определенной рубрики.

ну и смысл какой?

Объясню: смысл в том, что я не хочу, чтобы все рубрики сайта были в одном блоке. Во-первых – не эстетично, Во-вторых – страдает юзабилити (именно в моём случае).
Например, сайт про слонов и их наездников. И лучше ведь такой вид навигации:

СЛОНЫ
- всё о слонах
- чем питаются слоны
- сколько могут выпить пива

НАЕЗДНИКИ
- всё о наездниках
- чем питаются наездники
- могут ли перепить слонов

чем вот такая кашица:

СЛОНЫ И НАЕЗДНИКИ
- всё о слонах
- чем питаются слоны
- сколько могут выпить пива
- всё о наездниках
- чем питаются наездники
- могут ли перепить слонов

Поэтому я хочу каждую рубрику вывести на определённую страничку и красиво вписать их в навигацию сайта. Но возникла проблема – на страничке-рубрике выводятся все записи, получается простыня. Хотелось бы это поправить. Проблема всё-таки.

Я в php не силён. Если решение этой проблемы требует много времени и усилий, то прошу простить мою не преднамеренную наглость. 🙂

Я не то, чтобы настаивал. 🙂 Но если кто-нибудь может сказать что-нибудь дельное по моему вопросу, буду признателен.

в чем именно сложность? на странице рубрики выводятся посты этой рубрики (СЛОНЫ), а посты рубрики НАЕЗДНИКИ выводятся на своей странице.
если вы хотите на главной странице выводить каждую рубрику в своем "блоке", то повторите код с get_posts [в php-шаблоне отвечающем за вывод главной страницы] столько раз, сколько у вас рубрик. или на главную можно вывести Статическую Страницу, или все что угодно, как фантазия или техзадание подскажет…

про php-шаблоны у меня в подписи ссылка

Спасибо за наводки, Sonika, буду посмотреть. 🙂

Здравствуйте!
Подскажите, пожалуйста, каким образом можно сделать, чтобы на одной странице выводились сообщения из одной категории, при этом чтобы сообщения выводились полностью. Т. е. чтобы пост не обрезался, содержал изображения и ссылки, которые в нем были.
Я сделала страницу и проделала описанные выше действия:

Ниже идет сначала функция, потом вывод. Эту функцию можно запихнуть в
файл functions.php в папке wp-includes:

Код:

<?php
function announce($text, $announce_length = 120)
{
$text = trim(strip_tags($text, ‘<br>’));
if (!$text) return;
$a = preg_split(‘/ +/’, $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
$ret = ”;
foreach ($a as $val)
{
if ($val[1] + strlen($val[0]) >= $announce_length) break;
$ret .= (‘ ‘.$val[0]);
}
return $ret.(strlen($ret)<strlen($text)?’…<b>&raquo;</b>’:”);
}

$posts = get_posts(‘category=7&numberposts=100’);
foreach ($posts as $post):
echo ‘<li><a href="’;
echo get_permalink($post->ID);
echo ‘">’;
echo $post->post_title;
echo ‘</a></li>’;
echo ‘<p>’;
echo announce($post->post_content, 100000000);
echo ‘</p>’;
endforeach;
?>

Сообщения выводятся, но без линков и без картинок.

Заранее спасибо!!!

по-моему вы немного не в ту сторону ушли: разве через луп и запрос на вывод постов данная задача не решается?

Всем привет у меня сайт allodessa.com
Я не могу понять куда вставляются все эти коды?

У меня задача простая:
Есть старницы:
Новости
Однокомнатные
Двухкомнатные
Трёхкомнатные

и есть рубрики
Новости
Однокомнатные
Двухкомнатные
Трёхкомнатные

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

Добрый день. Сделал все как тут написано, до сегодняшнего дня делал так и раньше, вроде разобрался, вроде все равботало. Но тут столкнулся с проблемой. Включил ЧПУ, блок все равно выводится, но теперь заголовки ведут не на запись, а на урл вида: http://site.ru/$post_title
В настройках ЧПУ поставил галочку на "произвольная структура" и написал $post_title, пробовал писать и просто title и post_title и $post_title$, меняется только окначание урла, но ссылка все равно никуда не ведет.

Возможно я просто не правильно пишу произвольную структуру? Или такой вывод не работает с включенными ЧПУ?
Заранее спасибо, Ян.

_______________________
Разобрался, необходимо в произвольной структуре написать /%category%/%postname% или просто %postname%

Всем привет у меня сайт allodessa.com
Я не могу понять куда вставляются все эти коды? 

У меня задача простая:
Есть старницы:
Новости
Однокомнатные
Двухкомнатные
Трёхкомнатные

и есть рубрики
Новости
Однокомнатные
Двухкомнатные
Трёхкомнатные

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

Что-то Ваша задача не совсем понятна. Зачем Вы делали страницы как рубрики? Выведете в меню просто рубрики, а на главной поставте статический текст (Настройки-Чтение).
Если же нет и надо именно как написали, то опять таки Настройки-Чтение, помещаете на главную статический текст. Затем открываете нужную страницу в режиме HTML и прописываете код из темы, вставляете номер нужной категории и нужное колличество постов.

Иногда нужно вывести записи вне основного цикла theeLoop. Обычно это делается с помощью query_posts. Проблема в том, что WordPress использует глобальные переменные, и после использования этой функции, условия  query_posts станут глобальными.

Чтобы этого избежать, нужно использовать функцию get_posts. Например, мы хотим вывести в сайдбаре список последних записей в рубрике новости (id=1):

<h2 class="pages_search">Новости</h2>
<ul class="is_kat">
<?php
$posts_new = get_posts('category=1&numberposts=3');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo mysql2date('j.m.Y',  $post_new->post_date); 
    echo ' - ';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach;    
?>
</ul>

То есть мы получаем все записи с нужным нам условием get_posts('category=1&numberposts=3') в объект $posts_new. Далее, мы просто обходим его в цикле и выводим нужные нам записи.

Здравствуйте! Подскажите плиз как можно на примере вашего кода сделать вывод последних комментериев. Сам не осилил разобраться.

p.s. Всю тему прочитал, как применить к комментам непонял, возможно что то пропустил.

Подскажите пожалуйста как вывести список записей (в виде меню) текущей рубрики?
1. Сделал отдельный шаблон, установил Use parent category template (http://blog.portal.kharkov.ua/2008/07/19/use_parent_category_template/) для вывода родительской, дочерних рубрик и их постов.
2. Создал sidebar-2.php где отображается навигация вперед назад, title поста. Все работает
Но! Как добавить вывод Списка всех постов Текущей рубрики?
http://vitaliksedov.ru/maneg/page/2 – вот куда надо добавить
Спасибо)

Решено. Спасибо Sonika!

Кому надо (http://mywordpress.ru/support/viewtopic.php?id=14977):

<?php $mycat=get_the_category(); $mycat=$mycat[0]; ?>
<?php $postslist = get_posts(‘numberposts=-1&orderby=title&order=ASC&category=’.$mycat->cat_ID); ?>
<p>По алфавиту:</p>
<ul>
<?php foreach ($postslist as $post) : setup_postdata($post); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
<?php endforeach; ?>
</ul>

Добрый день! Я хочу чтобы сразу после захода на сайт отображалались два столбца поста: 1 категория – новости, а 2 категория – объявления. В этих категориях должны выводится только название новостей и объявлений.

Новости Объявления
1.Ввввввввввввввввввввв 1.Ввввввввввввввввввввв
2.Ввввввввввввввввввввв 2.Ввввввввввввввввввввв
3.Ввввввввввввввввввввв 3.Ввввввввввввввввввввв
4.Ввввввввввввввввввввв 4.Ввввввввввввввввввввв
5.Ввввввввввввввввввввв 5.Ввввввввввввввввввввв
весь список… весь список…

Типа такого. Когда нажимаешь на название новости переходит на полный вариант отображения. Заранее Спасибо!

Вопрос решен!

Использую код

                $posts_new = get_posts('category=1&numberposts=3');

                foreach ($posts_new as $post_new) :
                    echo '<li><h3><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo $post_new->post_title;
                    echo '</a></h3></li>';
                    echo '<div id="main-test" class="test-main">';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) )
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                  echo $post_new->post_content;
                    echo '</div>';
                endforeach;

Все прекрасно! Но как сделать так, чтобы ссылки на картинке были на запись, а не на саму картинку?

Кто-то тут спрашивал как сделать "читать далее" если есть more

Я покурил этот топик и написал такое:
<?php
                $posts_new = get_posts('category=1&numberposts=1');

                foreach ($posts_new as $post_new) :
                    echo '<div class="post_content">';
                    echo '<h2>'; 
                    echo $post_new->post_title;
                    echo '</h2>';

                    if ( preg_match('/<!--more(.*?)?-->/', $post_new->post_content, $matches) ){
                       list($post_new->post_content,$junk) = explode($matches[0], $post_new->post_content, 2);

                    echo $post_new->post_content;
                    echo '<br/><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    echo 'Читать далее...';
                    echo '</a>';
                    echo '</div>';
}
                    
                    else {
                    echo $post_new->post_content;
                    echo '</div>';
}

                endforeach;
                ?>

Не знаю насколько коряво - не могу оценить, но работает.
Спасибо Ю.Б. за подсказки в теме.

А вот я "не вкурил"… Этот, например, вариант у меня не выводит надпись "Читать далее…", а посты выводятся в полный рост! До этого перепробовал ещё 5 вариантов, везде что-то да не так.
Мне нужно так: заголовок, дата, урезанный пост со ссылкой "Читать далее…", нужно чтоб выводилось 2 последних поста.
Писал такой код:

<?php
           $posts_new = get_posts('category=&numberposts=2');

           foreach ($posts_new as $post_new) :
                    echo '<h2><a href="'; 
                    echo get_permalink($post_new->ID);
                    echo '">';
                    
                    echo $post_new->post_title;
                    echo '</a></h2>';
                    echo  mysql2date('j.m.Y',  $post_new->post_date);        
                    echo '<div>';
                    echo '<p>';
                    echo the_excerpt();     
                    echo '</p>';
                    echo '</div>';
                endforeach;
?>

При этом варианте всё устраивает, да только текст почему-то одинаковый, что в первом посте, что во-втором. При этом заголовки и время написания постов соответствует действительности. Чудеса да и только!
Ещё такой вопросик: как для этих записей присваивать классы, например, только для строки с датой?

———————————————

Чтобы было понятно: вот, то что выводит:

"Дизайн интерьера
14.08.2010
Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите её, затем пишите!

Альбомы
11.08.2010
Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите её, затем пишите!"

У поста "Дизайн интерьера" и у поста "Альбомы" тексты другие, а выводится текст сами знаете откуда, с первого поста, который идет по умолчанию.

Вы используете в цикле функцию the_excerpt(); которая ничего не знает о Ваших маневрах с $post_new. Она выводит "огрызок" поста, который получен в Основном Цикле (the Loop который).

Вы используете в цикле функцию the_excerpt(); которая ничего не знает о Ваших маневрах с $post_new. Она выводит "огрызок" поста, который получен в Основном Цикле (the Loop который).

Спасибо за ответ, но мало что понятно. В изучении всех этих хитростей я так далеко ещё не зашел (а может не ту литературу читаю…). Заменил excerpt на content, а воз и ныне там…

Добрый вечер всем.
Меня интересует вывод в сайдбаре в специальных блоках записи из рубрик новости и в другой колонке рецензии.
Шаблон вот этот- http://wpstyles.org/02/
Справа в демо есть NEWS и GIZMOS. Мне нужно, чтобы там выводились записи из вышеназванных рубрик.
Возможно ли такое организовать?

Доброе время суток.

Уже второй вечер пытаюсь вкурить вывод рубрик, но не получается.
Сайт: http://skfavorit.com.ua/
Нужно вывести посты отдельно по рубрикам вот сюда: http://skfavorit.com.ua/category/портфолио/
Тестовая структура рубрик сейчас такая: http://puu.sh/8h0I (т.е. "Дома" находится в "Портфолио").
В каждую из 2 рубрик я закинул по 1 материалу (видно по ссылке выше), однако вывести посты из рубрик 1 и 2 отдельно не получается, использую такой код:

Шаблон рубрик (category.php)

Категория 1
<?php
                $posts_new = get_posts('category=1');
                foreach ($posts_new as $post_new) :
                    echo $post_new->post_content;
                endforeach;
?>
<hr />
Категория 2

<?php
                $posts_new = get_posts('category=2');
                foreach ($posts_new as $post_new) :
                    echo $post_new->post_content;
                endforeach;
?>

Результат: http://puu.sh/8h0Z
Прошу помощи.
Готовый код просить стыдно, но я уже не понимаю в чем причина, поэтому готовому коду буду благодарен и использую его для анализа.

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

1. в первом Цикле выводятся посты из категории с ID = 1 и её подкатегорий.
2. возможно, ID второй категории вовсе не 2.

А просить готовый код и не надо, его надо искать. Этого добра тут хватает. Например, http://forum.maxsite.org/viewtopic.php?pid=60594

[quote=olegsuv]Готовый код просить стыдно, но я уже не понимаю в чем причина, поэтому готовому коду буду благодарен и использую его для анализа.

1. в первом Цикле выводятся посты из категории с ID = 1 и её подкатегорий.
2. возможно, ID второй категории вовсе не 2.

А просить готовый код и не надо, его надо искать. Этого добра тут хватает. Например, http://forum.maxsite.org/viewtopic.php?pid=60594[/quote]
Буду благодарен, если поможете с поиском, сам тоже пробую искать.

foreach (get_categories() as $cat):
 query_posts('posts_per_page=1&cat='.$cat->cat_ID);
 if (have_posts()) : 
  the_post();
  the_title();
  the_content();
 endif;
endforeach;

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

А по структуре все нормально? Можно ли на странице категории выводить записи из вложенных в нее категорий?

Сложными манипуляция удалось определить, что моя категория, которую я считал с ИД=2, оказалась с ИД=5.
Вывел записи, однако в первую категорию попала запись из вложенной категории. Можно ли этого избежать?

Посмотрите в Кодексе описание и параметры query_posts и WP_Query. У них есть параметр category__in, отличающийся от category тем, что посты берутся только из указанной категории, без дочерних. По крайней мере, мне так помнится 😉

Посмотрите в Кодексе описание и параметры query_posts и WP_Query. У них есть параметр category__in, отличающийся от category тем, что посты берутся только из указанной категории, без дочерних.  По крайней мере, мне так помнится ;)

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

Помогите адаптировать этот код для решения следующей задачи: вывести в сайдбар
на странице id1 – все записи из категории id1;
на странице id2 – все записи из категории id2;
…..
на странице id7 – все записи из категории id7;
Заранее спасибо

Сделал вывод записей для одной страницы

<?php
if (is_page ('1')) {
$posts_new = get_posts('category=1&order=ASC');
foreach ($posts_new as $post_new) :
    echo '<li class="news_item"><a href="'; 
    echo get_permalink($post_new->ID);
    echo '">';
    echo $post_new->post_title;
    echo '</a></li>';
endforeach; 
}?>

Теперь надо этот код 7 раз подряд вставить и поменять id страниц и категорий? Или можно как-то оптимизировать?

Anonymous
Отправить
Ответ на: