私は次のforeach
ループを使っています。
$pages = get_pages(array ('post_type' => 'page','sort_column' => 'menu_order',));
foreach ($pages as $page) {
$apage = $page->post_name;
if ( $apage =='about') {
echo apply_filters('the_content', $page->post_content)
} // if about page
} // foreach
を使用して、コンテンツ全体ではなくページまたは投稿の抜粋を取得できるようにしたいです。
$post->post_excerpt
これは可能ですか?
_編集_
私はいくらかあなたを誤解しているようです。私はあなたがpost_excerpt
のポイントを見逃していると思います。
新しい投稿やページを作成するとき(ページにも同じ)、抜粋メタボックスで手動の抜粋を作成することができます(使用可能にするには、新規追加/編集で画面オプションドロップダウンで有効にするだけです)投稿/ページ画面)。そのメタボックスに入力したこの手動の抜粋(または ユーザー定義の抜粋 )は、post_excerpt
の下に保存され、$post->post_excerpt
で取得できます。そのメタボックスが空の場合、つまり手動の抜粋を指定していない場合、何も返されません。
コンテンツを使用して抜粋を作成することで抜粋を作成するテンプレートタグthe_excerpt()
と同じようには機能しません。BTWはページには機能しません。
チェックアウトしてください WP_Post
post_excerpt
ひも
ユーザー定義の投稿抜粋
編集2
手動の抜粋メタボックスが表示されていない場合は、次のコードを使用してアクティブにすることができます。
add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
元の答え
ここでのget_pages
の使い方は、ここでは間違っています。 get_pages
はこの用途を意図していません。
get_posts
または WP_Query
のいずれかのカスタムクエリを使用してください。
あなたはあなたのページと抜粋を表示するためにこのようなことをすることができます
<?php
// The Query
$the_query = new WP_Query('post_type=page' );
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_title();
the_excerpt();
}
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
$query = new WP_Query( 'pagename=about' );
// The Loop
while ( $query->have_posts() ) {
$query->the_post(); ?>
<header class="entry-header">
<h2 class="entry-title">
<?php the_title(); ?>
</h2>
</header>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div>
<?php }
wp_reset_postdata(); ?>
上記のコードを使用しました。 foreachループではなく、複数のクエリを実行する必要があります。私はまだ私が提出したforeachループを使って抜粋する方法を知りたいのです。
このコードをfunctions.phpに追加すると、Pagesの抜粋に対するサポートが追加されます。
<?php
add_action('init', 'my_custom_init');
function my_custom_init() {
add_post_type_support( 'page', 'excerpt' );
}
?>
抜粋を表示するためにこれを使用してください。
$pages = get_pages(array ('post_type' => 'page','sort_column' => 'menu_order'));
foreach ($pages as $page) {
$apage = $page->post_name;
if ( $apage =='about') {
echo apply_filters('the_excerpt', $page->post_content);
} // if about page
} // foreach