Текст, возвращаемый функцией the_excerpt(), не соответствует формату моего виджета. Я не мог бы объяснить это лучше, поэтому я просто покажу вам свой код:
function widget($args, $options) {
extract($args);
$post_type = $options['post_type'];
$num_of_posts = $options['limit'];
// Create a new instance
$second_query = new WP_Query( array(
'post_type' => "$post_type",
'posts_per_page' => "$num_of_posts",
'post_status' => 'publish',
) );
// The Loop
if ($second_query->have_posts()) :
while( $second_query->have_posts() ) : $second_query->the_post();
$byh_content .= "<p>" . the_excerpt() . "</p>";
endwhile; else :
$byh_content = "<p>No " . $options['post_type'] . "s found.</p>";
endif;
wp_reset_postdata();
$title = "<h3>" . $options['title'] . "</h3>";
$content = $byh_content;
echo $before_widget.$title.$content.$after_widget;
}
Результат не тот, что я ожидал. Вот как это выглядит при рендеринге:
Заголовок должен быть вверху. Причина в том, что отрывок находится не там, где он должен быть:
поскольку вы работаете со строками, вам нужно использовать функцию, которая возвращает значение, а не повторяет его; в этой строке:
$byh_content.= "<p>". the_excerpt(). "</p>";
используйте
get_the_excerpt()
http://codex.wordpress.org/Function_Reference/get_the_excerptНе могли бы вы просветить меня, почему мой метод не работает? :-\
повторяет (показывает) усеченный контент сразу же там, где он используется в коде, вместо этого возвращая его (передавая) в строковую переменную. есть общие (не всегда) два типа функций wordpress — те, которые начинаются с
the_
этого, выводят результаты, а другие, начиная сget_
этого, возвращают результаты.