Conserver le contenu présenté sur la page d'accueil avec la commande d'origine

17

Je cherche comment conserver le post en vedette sur la page d'accueil de mon blog sans l'exclure du post de requête. Mon blog utilise le thème Twenty Fourteen. J'ai trouvé cette solution.

Ouvrez le Featured-content.php du dossier inc de votre thème et recherchez le code suivant (ligne 269 dans notre cas).

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

Commentez simplement cette ligne, en ajoutant deux barres obliques devant elle, pour obtenir ceci:

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

Mais le fichier n'a pas cette ligne et le thème enfant ne peut pas remplacer le dossier inc du thème parent.

J'ai trouvé une autre solution et cela fonctionne, mais le problème est que ce code montre que le contenu en vedette n'est pas dans son ordre d'origine. Lorsque l'ancien article de contenu - j'utilise un article collant pour rendre l'article en vedette - devient en vedette, l'article de contenu en vedette deviendra la première commande, puis l'autre article.

J'ai essayé d'utiliser une balise conditionnelle comme celle-ci.

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 deuxième page et ainsi de suite bien - affichez les articles présentés dans l'ordre - mais la page d'accueil a toujours un problème.

Aucune suggestion?

Naziman Azlye
la source
Je pense avoir la réponse. Pour que cela fonctionne, vous devez utiliser la balise «en vedette» plutôt que d'utiliser un post-it pour créer du contenu en vedette. Donc la solution est correcte et j'ai une mauvaise compréhension et je pose une mauvaise question. La balise conditionnelle, vous pouvez la supprimer car le code fonctionne sans balises conditionnelles.
Naziman Azlye
1
Je sais que c'est assez tard, mais cela vous dérangerait-il d'ajouter le commentaire ci-dessus comme réponse? Cette question a pas mal de votes positifs et avoir une bonne réponse la rend plus évidente. Merci d'avance!
kraftner

Réponses:

1

Je pense que vous pouvez utiliser le 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; ?>

et pour commander votre article, vous pouvez utiliser la commande et la commande en consultant la référence https://codex.wordpress.org/Class_Reference/WP_Query

Taj Khan
la source