以前、ここの記事、や、ここの記事、や、ここの記事で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。
