3件の投稿を表示する必要があります。私はこのコードを作成しました:
add_shortcode('projects', 'projects_shortcode');
function projects_shortcode($atts, $content){
extract(shortcode_atts(array(
'post_type' => 'project',
'post_status' => 'publish',
'posts_per_page' => 3,
'caller_get_posts' => 1
), $atts));
$args = array(
'post_type' => $post_type,
'post_status' => $post_status,
'posts_per_page' => $posts_per_page
);
global $post;
$posts = new WP_Query($args);
$out = '';
if ($posts->have_posts())
while ($posts->have_posts()):
$posts->the_post();
$overview_image = get_field('small_overview_image');
$out = '<div class="row"><div class="col-md-4">
<a href="'.get_permalink().'" title="' . get_the_title() . '" class="project-item">
<div class="project-item_img"><img class="img-fluid" src="'.$overview_image['url'].'" /></div>
<div class="project-item_title">
<div class="project-item_title-name">'.get_the_title().'</div>
<div class="project-item_title-description">'.get_the_title().'</div></div>';
$out .='</a></div></div>';
/* these arguments will be available from inside $content
get_permalink()
get_the_content()
get_the_category_list(', ')
get_the_title()
and custom fields
get_post_meta($post->ID, 'field_name', true);
*/
endwhile;
else
return; // no posts found
wp_reset_query();
return html_entity_decode($out);
}
Wp-editorではショートコード[projects]
を使用してください。
しかし、このコードは1つの投稿しか表示しません。 'posts_per_page' => 3
が機能しません。私はphp開発者ではありません。このコードのどこにエラーがあるのでしょうか。
この行で:
$out = '<div class="row"><div class="col-md-4">
各投稿の$out
変数をリセットしています。それをに変更します。
$out .= '<div class="row"><div class="col-md-4">
これにより、それぞれの新しい投稿が前の投稿の出力に追加され、出力が返されるときにすべての投稿からの出力が含まれるようになります。