WordPressには、関連記事を出す方法がいくつかあるのでR。
ソースをいじって実現する方法は、この記事にあるのでR。
プラグインで実現する方法は、この記事にあるのでR。
しかし、
関連記事を、あえてランダム記事としたいのでR。
プラグインではなくて、ソースをいじる場合は、
こちらが参考になるのでR。
single.phpか、content-single.phpを見て、挿入したい個所にうまく、
<div id="random-posts">
<h2>Random Post</h2>
<ul>
<?php $posts = get_posts('orderby=rand&numberposts=5'); foreach($posts as $post) { ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php } ?>
</ul>
</div>
か、こちらのように、先のphpの部分を
<?php $args = array( 'numberposts' => 5, 'orderby' => 'rand', 'post_status' => 'publish', 'offset' => 1); $rand_posts = get_posts( $args ); foreach( $rand_posts as $post ) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?>
と記述すれば出るのでR。
ただし、
<?php the_title(); ?>
があるように、これはタイトルしか対応していないのでR。
そこで、
あえて、記事の最初部分の抜粋から、それをタイトルの代わりにしたいのでR。
<?php the_excerpt(); ?>
としたが、これはタイトルの代わりと違って、その投稿の抜粋しか、出ないのでR。
そこで調べたのでR。
それには
function.phpをいじることになるようでR。
function.phpをいじる際の注意は、この記事にあるのでR。
まず、こちらを参考にして、
function ltl_get_the_excerpt($post_id){
global $post;
$post_bu = $post;
$post = get_post($post_id);
$output = get_the_excerpt();
$post = $post_bu;
return $output;
}
を入れ、
<?php ltl_get_the_excerpt(); ?>
とするが、うまくでないのでR。
そこで、
<?php ltl_get_the_excerpt($post->ID); ?>
と引数を入れるも、これもだめでR。
調べると、
こちらの、setup_postdata() なる関数で、あらかじめ、なんかしないといけないようでR。
しかし、
これをこちらのように、function.phpのfunctionに入れると、
function get_the_excerpt( $post_id ){
global $post;
$save_post = $post;
$post = get_post($post_id);
setup_postdata( $post ); // hello
$output = get_the_excerpt();
$post = $save_post;
return $output;
}
でエラーとなるのでR。
そこで、single.phpか、content-single.phpにsetup_postdata()を入れ、下のようにすると、
<?php $args = array( 'numberposts' => 5, 'orderby' => 'rand', 'post_status' => 'publish', 'offset' => 1); $rand_posts = get_posts( $args ); foreach( $rand_posts as $post ) : setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php echo get_the_excerpt_id($post->ID); ?></a></li> <?php endforeach; ?>
出たのでR。これを解決するまでに、随分と時間がかかったのでR。

この記事をシェアできます。