さて、私はたくさんのショートコード スニペットを試して、最近の 3 つの投稿を自分の投稿 (ページではなく) にショートコードとして表示しました。
お気に入り:
function posts_shortcode() {
$the_query = new WP_Query(array('posts_per_page' => 3));
// The Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
echo '<li>';
the_title();
echo '</li>';
endwhile;
// Reset Post Data
wp_reset_postdata();
}
add_shortcode('posts', 'posts_shortcode');
と
function posts_shortcode() { // From Smashingmagazine
query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => 3));
if (have_posts()) :
while (have_posts()) : the_post();
$return_string = '<a href="'.get_permalink().'">'.get_the_title().'</a>';
endwhile;
endif;
wp_reset_query();
return $return_string;
}
function register_shortcodes(){
add_shortcode('posts', 'posts_shortcode');
}
そしてさえ
function wptuts_recentpost($atts, $content=null){ // From WP Tuts+
$getpost = get_posts( array('number' => 1) );
$getpost = $getpost[0];
$return = $getpost->post_title . "<br />" . $getpost->post_excerpt . "…";
$return .= "<br /><a href='" . get_permalink($getpost->ID) . "'><em>read more →</em></a>";
return $return;
}
add_shortcode('newestpost', 'wptuts_recentpost');
これらはすべて機能していないようです。ループか何かと関係があるのではないかと思います。ループを削除して、次のようなことだけを行うと
return 'hey there';
function() では、問題なく動作します。
何か案は?
編集: 次のショートコードを使用:
function posts_shortcode() { // From Smashingmagazine
query_posts($args);
if (have_posts()) :
while (have_posts()) : the_post();
$return_string = '<a href="'.get_permalink().'">'.get_the_title().'</a>';
endwhile;
endif;
wp_reset_query();
return $return_string;
}
add_shortcode('posts', 'posts_shortcode');
なんとか結果を得ることができましたが、現在、フロントページへのリンクを含むテキスト Home が表示されています。まず第一に、理由がわかりません..第二に、$args を 'posts_per_page=5' に置き換えると、また消えてしまいます。なんらかの理由でループに問題があると本当に思います..