web-dev-qa-db-ja.com

Post_excerptを使用して投稿またはページの抜粋を取得する方法

私は次の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

これは可能ですか?

3
cmsdeployed

_編集_

私はいくらかあなたを誤解しているようです。私はあなたが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();
4
Pieter Goosen
$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ループを使って抜粋する方法を知りたいのです。

0
cmsdeployed

このコードを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
0
Hassan Alvi