以前、ここの記事、や、ここの記事、や、ここの記事でWordpressでカスタム投稿を実現したのでR。前2つはプラグインによるもの、後1つはソースをいじることで実現したが、個人的には3つめのソースによる方法が重たくないような感じがして、お気に入りなのでR。
そこで、ここではソースによるカスタム投稿の、しかも、その記事の抜粋を実現したいのでR。
しかし、
記事の抜粋は、先の記事にも示したように、get_the_excerpt() か、the_excerpt()で実現できるのでRが、これは通常の投稿であって、カスタム投稿には通用しないのでR。
通常の投稿の部分にカスタム投稿の記事の抜粋をするには、結構ややこしかったのでR。
まず、通常の投稿の表示に関するcontent-single.phpやsingle.phpに
1 2 3 4 5 6 7 8 9 10 | <?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。
ここでややこしいのが、
1 2 3 4 | <?php $args = array ( 'posts_per_page' => 1, 'post_type' => 'custompost' ); ?> <?php query_posts( $args ); ?> <?php wp_reset_query(); ?> |
でRが、これで投稿1つ、投稿タイプはカスタム投稿と指定しないといけないようでR。
次に、
1 2 3 4 5 | <?php if (have_posts()): ?> <?php while (have_posts()):the_post(); ?> <?php endwhile ; else : ?> <?php endif ; ?> |
でRが、投稿があるか、あるならwhileで調べるのでR。
次に、
1 2 3 | <? $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をセットして、さらにややこしいのが、
1 | <?php setup_postdata( $url_pid ); ?> |
でRが、これでここの投稿ですよと指定しないといけないのでR。ここではカスタム投稿のIDが指定されるのでR。ここの記事でも書いたのでRが、このsetup_postdata()がくせもので、これがないといつも同じ(たぶん先頭の)抜粋となるのでR。
最後に、
1 | <?php echo get_the_excerpt_id( $url_pid ); ?> |
でRが、これはget_the_excerpt()を利用した作成したfunctionで、function.phpに
1 2 3 4 5 6 7 8 | 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レンタルサーバー』

(広告)年間920円(税抜)からの格安ドメイン取得サービス─ムームードメイン─
