WordPressでカスタム投稿の記事の抜粋を実現するのでR

以前、ここの記事、や、ここの記事、や、ここの記事でWordpressでカスタム投稿を実現したのでR。前2つはプラグインによるもの、後1つはソースをいじることで実現したが、個人的には3つめのソースによる方法が重たくないような感じがして、お気に入りなのでR。

そこで、ここではソースによるカスタム投稿の、しかも、その記事の抜粋を実現したいのでR。

しかし、

記事の抜粋は、先の記事にも示したように、get_the_excerpt() か、the_excerpt()で実現できるのでRが、これは通常の投稿であって、カスタム投稿には通用しないのでR。

通常の投稿の部分にカスタム投稿の記事の抜粋をするには、結構ややこしかったのでR。

まず、通常の投稿の表示に関するcontent-single.phpやsingle.phpに

<?php $args = array( 'posts_per_page'=> 1, 'post_type' => 'custompost'); ?>
<?php query_posts( $args ); ?>
<?php if(have_posts()): ?>
<?php while(have_posts()):the_post(); ?>
<? $url_get = esc_url( home_url() . $_SERVER['REQUEST_URI'] ); $url_ret = str_replace('.net/','.net/custompost/',$url_get); $url_pid = url_to_postid($url_ret); ?>
<?php setup_postdata($url_pid); ?>
<?php echo get_the_excerpt_id($url_pid); ?>
<?php endwhile; else: ?>
<?php endif; ?>
<?php wp_reset_query(); ?>

と記入するのでR。

ここでややこしいのが、

<?php $args = array( 'posts_per_page'=> 1, 'post_type' => 'custompost'); ?>
<?php query_posts( $args ); ?>

<?php wp_reset_query(); ?>

でRが、これで投稿1つ、投稿タイプはカスタム投稿と指定しないといけないようでR。

次に、

<?php if(have_posts()): ?>
<?php while(have_posts()):the_post(); ?>

<?php endwhile; else: ?>
<?php endif; ?>

でRが、投稿があるか、あるならwhileで調べるのでR。

次に、

<? $url_get = esc_url( home_url() . $_SERVER['REQUEST_URI'] ); $url_ret = str_replace('.net/','.net/custompost/',$url_get); $url_pid = url_to_postid($url_ret); ?>
<?php setup_postdata($url_pid); ?>
<?php echo get_the_excerpt_id($url_pid); ?>

でRが、通常の投稿のURLを調べて、その下はカスタム投稿のURLを調べて、カスタム投稿のIDをセットして、さらにややこしいのが、

<?php setup_postdata($url_pid); ?>

でRが、これでここの投稿ですよと指定しないといけないのでR。ここではカスタム投稿のIDが指定されるのでR。ここの記事でも書いたのでRが、このsetup_postdata()がくせもので、これがないといつも同じ(たぶん先頭の)抜粋となるのでR。

最後に、

<?php echo get_the_excerpt_id($url_pid); ?>

でRが、これはget_the_excerpt()を利用した作成したfunctionで、function.phpに

function get_the_excerpt_id($post_id){
  global $post;
  $post_bu = $post;
  $post = get_post($post_id);
  $output = get_the_excerpt();
  $post = $post_bu;
  return $output;
}

を記入することが必要となるのでR。

ただし、

function.phpをいじるには、ここにあるように注意しないといけないのでR。

上はややこしい方法で、しかも、場当たり的なソースなのでうまくいかない人はご免、なのでR。

ただし、

ミーはこれで一応正しく動いているのでR。

その他に、カスタム投稿のURLからの抜粋方法も考えたのでRが、これは分からなかったので、仕方なしになんとかして上の方法で実現できたのでR。






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

月額900円(税抜)から、高速・多機能・高安定レンタルサーバー『エックスサーバー』
WordPressの運用に特化したレンタルサーバー『wpXレンタルサーバー』