Afișează doar începutul articolului

28 mar. 2017, 17:34:09
Vizualizări: 272
Voturi: 0

Știu că aceasta este în mod normal o întrebare evidentă cu multe răspunsuri (cum ar fi aici), dar aș dori să afișez doar începutul postărilor cu un buton "citește mai mult". Nu folosesc rezumate, așa că aș dori ca WordPress să extragă automat primele 55 de cuvinte sau prima frază pentru a le afișa.

Folosesc tema Toivo Lite. Fișierul index.php este:

<?php
get_header(); ?>

<?php if ( have_posts() ) : ?>

    <?php do_action( 'toivo_before_loop' ); // Acțiune înainte de buclă. ?>

    <?php /* Începe bucla */ ?>
    <?php while ( have_posts() ) : the_post(); ?>

        <?php
            /* Include șablonul specific formatului postării pentru conținut.
             * Dacă dorești să suprascrii acest lucru într-o temă copil, atunci include un fișier
             * numit content-___.php (unde ___ este numele Formatului Postării) și acesta va fi folosit în loc.
             */
            get_template_part( 'content', ( post_type_supports( get_post_type(), 'post-formats' ) ? get_post_format() : get_post_type() ) );
        ?>

    <?php endwhile; ?>

    <?php
        the_posts_pagination( array(
            'prev_text'          => __( 'Pagina anterioară', 'toivo-lite' ),
            'next_text'          => __( 'Pagina următoare', 'toivo-lite' ),
            'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Pagina', 'toivo-lite' ) . ' </span>',
        ) );
    ?>

<?php else : ?>

    <?php get_template_part( 'content', 'none' ); ?>

<?php endif; ?>

<?php do_action( 'toivo_after_loop' ); // Acțiune după buclă. ?>

<?php get_footer(); ?>

Am încercat să înlocuiesc cele două content cu excerpt, dar apoi pagina este goală (doar antet și subsol).

0
Toate răspunsurile la întrebare 2
4

Încercați să înlocuiți acest cod:

        <?php
            /* Include șablonul specific pentru Formatul Postării.
             * Dacă doriți să suprascrieți acest lucru într-o temă copil, atunci includeți un fișier
             * numit content-___.php (unde ___ este numele Formatului Postării) și acesta va fi folosit în loc.
             */
            get_template_part( 'content', ( post_type_supports( get_post_type(), 'post-formats' ) ? get_post_format() : get_post_type() ) );
        ?>

Cu acesta:

<?php echo my_excerpt(get_the_ID(), 300, 'Citește mai mult'); ?>

Și apoi adăugați acest cod în fișierul functions.php:

function my_excerpt($postid, $len = 500, $more = false) {

    $excerpt = apply_filters('the_excerpt', get_post_field('post_excerpt', $postid));

    if(empty($excerpt)) $excerpt = strip_shortcodes(strip_tags(apply_filters('the_excerpt', get_post_field('post_content', $postid))));

    if(strlen($excerpt) > $len) $excerpt = substr($excerpt, 0, $len-3) . '&hellip;';

    if($more) $excerpt .= '<a class="read-more" href="' . get_the_permalink($postid) . '">' . $more . '</a>';

    return $excerpt;
}

Implicit, această funcție va returna primele 300 de caractere din conținutul postării. Modificați valoarea "300" din apelul my_excerpt cu numărul de caractere pe care doriți să le returnați (rețineți, acesta nu este numărul de cuvinte de returnat, ci numărul de caractere).

28 mar. 2017 17:51:01
Comentarii

Acest lucru nu funcționează. Primele 300 de caractere sunt afișate, dar nu există nicio formatare sau titluri... Totul este într-un singur bloc.

Shan-x Shan-x
28 mar. 2017 18:35:05

Da, acest cod elimină toate acestea. Dacă nu doriți să fie eliminate, atunci schimbați această linie: if(empty($excerpt)) $excerpt = strip_shortcodes(strip_tags(apply_filters('the_excerpt', get_post_field('post_content', $postid)))); în aceasta: if(empty($excerpt)) $excerpt = apply_filters('the_excerpt', get_post_field('post_content', $postid));

Industrial Themes Industrial Themes
28 mar. 2017 18:39:16

Acest lucru este mai bine, dar tot nu există titluri sau formatare (ocupă toată lățimea în loc doar coloana).

Shan-x Shan-x
28 mar. 2017 18:42:50

În acest caz, încercați această alternativă pentru linia respectivă: if(empty($excerpt)) $excerpt = get_post_field('post_content', $postid); asta va afișa conținutul exact cum este, dar ar putea fi riscant deoarece dacă există orice cod html la începutul postării acesta va fi inclus în numărul de caractere, ceea ce ar putea duce la returnarea de conținut de lungimi diferite de la un post la altul.

Industrial Themes Industrial Themes
28 mar. 2017 18:44:18
3

Puteți încerca următoarele:

    <?php
    get_header(); ?>

    <?php if ( have_posts() ) : ?>

        <?php do_action( 'toivo_before_loop' ); // Action hook înainte de loop. ?>

        <?php /* Start the Loop */ ?>
        <?php while ( have_posts() ) : the_post(); ?>

            <?php
            /* Include the Post-Format-specific template for the content.
            * Dacă doriți să suprascrieți acest lucru într-o temă copil, atunci includeți un fișier
            * numit content-___.php (unde ___ este numele Formatului Postării) și acesta va fi folosit în loc.
            */
            echo wp_trim_words( get_the_content(), $num_words = 50, $more = '...' );
            echo '<a href="'.get_the_permalink().'">Citește mai mult</a>';
            ?>

        <?php endwhile; ?>

        <?php
        the_posts_pagination( array(
        'prev_text'          => __( 'Pagina anterioară', 'toivo-lite' ),
        'next_text'          => __( 'Pagina următoare', 'toivo-lite' ),
        'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Pagina', 'toivo-lite' ) . ' </span>',
        ) );
        ?>

    <?php else : ?>

        <?php get_template_part( 'content', 'none' ); ?>

    <?php endif; ?>

    <?php do_action( 'toivo_after_loop' ); // Action hook după loop. ?>

    <?php get_footer(); ?>

Am înlocuit:

    get_template_part( 'content', ( post_type_supports( get_post_type(), 'post-formats' ) ? get_post_format() : get_post_type() ) );

Cu:

    wp_trim_words( the_content(), $num_words = 50, $more = '...' );

Cineva ar putea spune că aceasta nu este cea mai bună abordare, dar v-ar putea fi de ajutor. Va afișa primele 50 de cuvinte din conținut urmate de "..." .

28 mar. 2017 19:40:53
Comentarii

Unde ar trebui să pun asta?

Shan-x Shan-x
28 mar. 2017 19:42:51

Te rog să dai click pe edit link de sub răspunsul tău pentru a adauga mai multe informații despre unde poți pune acest lucru, împreună cu orice formatare necesară a codului.

Howdy_McGee Howdy_McGee
28 mar. 2017 20:14:04

Am editat codul astfel încât să aibă mai mult sens, sper că te ajută.

Joe Joe
29 mar. 2017 11:31:05