Mantieni i contenuti in evidenza nella home page con l'ordine originale


17

Sto cercando come mantenere il post in primo piano nella home page del mio blog senza escluderlo dal post di query. Il mio blog utilizza il tema Twenty Fourteen. Ho trovato questa soluzione.

Apri il caratterizzato-content.php dalla cartella inc del tuo tema e cerca il codice seguente (riga 269 nel nostro caso).

$query->set( 'post__not_in', $featured );

Commenta semplicemente questa riga, aggiungendo due barre davanti, per ottenere questo:

// $query->set( 'post__not_in', $featured );

Ma il file non ha quella linea e il tema figlio non può sovrascrivere la cartella inc del tema principale.

Ho trovato un'altra soluzione e funziona, ma il problema è che questo codice mostra i post dei contenuti in primo piano non nel loro ordine originale. Quando un vecchio post di contenuti - sto usando un post appiccicoso per rendere post in primo piano - diventa in primo piano, il post in primo piano diventa il primo ordine e poi l'altro post.

Ho provato a usare un tag condizionale come questo.

function show_featured_content_on_home() {
if ( !is_home() ) {
remove_action( 'pre_get_posts', array( 'Featured_Content', 'pre_get_posts' ) );
    }
}
add_action( 'init', 'show_featured_content_on_home', 31 );

La seconda pagina e così via va bene - mostra i post in primo piano in ordine - ma la homepage ha ancora problemi.

Eventuali suggerimenti?


Penso di avere la risposta. Per farlo funzionare, è necessario utilizzare il tag "in primo piano" piuttosto che utilizzare post appiccicoso per creare contenuti in primo piano. Quindi la soluzione è corretta e ho una comprensione sbagliata e faccio una domanda sbagliata. Il tag condizionale, è possibile rimuoverlo perché il codice funziona senza tag condizionali.
Naziman Azlye,

1
So che è piuttosto tardi, ma ti dispiacerebbe aggiungere il commento sopra come risposta? Questa domanda ha alcuni voti positivi e avere una risposta adeguata la rende più ovvia. Grazie in anticipo!
Kraftner,

Risposte:


1

Penso che tu possa usare WPQuery

    $the_query = new WP_Query( array( 'post__in' => get_option( 'sticky_posts' )) ); ?>

    <?php if ( $the_query->have_posts() ) : ?>

        <!-- pagination here -->

        <!-- the loop -->
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>   
<h2><?php the_title(); ?></h2>
        <?php endwhile; ?>
        <!-- end of the loop -->

        <!-- pagination here -->

        <?php wp_reset_postdata(); ?>


    <?php endif; ?>

e per ordinare il tuo post puoi usare order e orderby vedi riferimento https://codex.wordpress.org/Class_Reference/WP_Query

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.