Cum să obții extrasul unei postări sau pagini folosind post_excerpt

25 aug. 2014, 02:18:20
Vizualizări: 31.6K
Voturi: 3

Folosesc următoarea buclă 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)
        } // dacă este pagina about
   } // foreach

Aș dori să pot obține extrasul paginii sau postării în loc de tot conținutul folosind

$post->post_excerpt

Este posibil acest lucru?

0
Toate răspunsurile la întrebare 3
0

EDITARE

Se pare că te-am înțeles greșit. Cred că nu ai înțeles scopul post_excerpt.

Când creezi un articol nou sau o pagină (cred că și pentru pagini), ai posibilitatea să creezi un rezumat manual în caseta meta pentru rezumat (pentru a o face disponibilă, activeaz-o din meniul "Opțiuni ecran" în timpul editării/creării unui articol/pagină). Acest rezumat manual (sau rezumat definit de utilizator) pe care îl introduci în acea casetă meta este salvat sub post_excerpt, pe care îl poți prelua cu $post->post_excerpt. Dacă acea casetă meta este goală, adică dacă nu ai specificat un rezumat manual, nu va fi returnat nimic.

Nu funcționează la fel ca eticheta de șablon, the_excerpt() care creează un rezumat din mers folosind conținutul pentru a crea un rezumat, care apropo nu funcționează pe pagini.

Te rog verifică WP_Post

post_excerpt

string

Rezumatul articolului definit de utilizator

EDITARE 2

Dacă caseta meta pentru rezumatul manual nu este afișată, o poți activa simplu cu următorul cod

add_action( 'init', 'add_excerpts_to_pages' );
function add_excerpts_to_pages() {
     add_post_type_support( 'page', 'excerpt' );
}

RĂSPUNS ORIGINAL

Folosirea get_pages aici este greșită. get_pages nu este destinat acestui scop.

Ar trebui să folosești o interogare personalizată cu get_posts sau WP_Query

Poți face ceva de genul acesta pentru a afișa paginile și rezumatele

<?php

// Interogarea
$the_query = new WP_Query('post_type=page' );

// Bucla
if ( $the_query->have_posts() ) {
  while ( $the_query->have_posts() ) {
    $the_query->the_post();
       the_title();
       the_excerpt();
    }
  } else {
  // nu s-au găsit articole
}
/* Restabilirea datelor originale Post */
wp_reset_postdata();
25 aug. 2014 08:19:58
3

Adăugați acest cod în functions.php, acesta va adăuga suport pentru rezumate în Pagini

<?php
    add_action('init', 'my_custom_init');
    function my_custom_init() {
        add_post_type_support( 'page', 'excerpt' );
    }
?>

Utilizați acest cod pentru a afișa rezumatul..

 $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);
        } // dacă este pagina about
   } // foreach
25 aug. 2014 03:09:46
Comentarii

Mulțumesc. M-am gândit la asta, dar eram mai degrabă neinteresat să văd opțiunea de excerpt în zona de administrare, încât nu m-am gândit că ar putea fi problema mea. Din nou, mulțumesc. :)

cmsdeployed cmsdeployed
25 aug. 2014 03:45:36

Am vorbit prea devreme. Nu a funcționat

cmsdeployed cmsdeployed
25 aug. 2014 04:15:49

încearcă <?php the_excerpt(); ?>

Hassan Alvi Hassan Alvi
25 aug. 2014 08:07:20
0
$query = new WP_Query( 'pagename=about' );

// Bucla 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(); ?>

Am ajuns să folosesc codul de mai sus. Va trebui să merg cu interogări multiple în loc de bucla foreach. Totuși, încă doresc să aflu cum să obțin rezumatul folosind bucla foreach pe care am trimis-o.

25 aug. 2014 09:48:13