Mantenga la publicación de contenido destacado en la página de inicio con el pedido original

17

Estoy buscando cómo mantener la publicación destacada en la página de inicio de mi blog sin excluirla de la publicación de consulta. Mi blog usa el tema Veinte Catorce. Encontré esta solución.

Abra el Featured-content.php de la carpeta inc de su tema y busque el siguiente código (línea 269 en nuestro caso).

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

Simplemente comente esta línea, agregando dos barras delante de ella, para obtener esto:

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

Pero el archivo no tiene esa línea y el tema secundario no puede anular la carpeta inc del tema principal.

He encontrado otra solución y funciona, pero el problema es que este código muestra la publicación de contenido destacado no en su orden original. Cuando la publicación de contenido anterior (estoy usando una publicación fija para hacer que la publicación destacada) se destaque, la publicación de contenido destacado se convertirá en el primer orden y luego en la otra publicación.

He intentado usar una etiqueta condicional como esta.

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 segunda página, etc., está bien, muestra las publicaciones destacadas en orden, pero la página de inicio todavía tiene problemas.

¿Alguna sugerencia?

Naziman Azlye
fuente
Creo que tengo la respuesta. Para que funcione, debe usar la etiqueta 'destacado' que usar una publicación fija para crear contenido destacado. Entonces, la solución es correcta y tengo una comprensión errónea y doy una pregunta incorrecta. La etiqueta condicional, puede eliminarla porque el código funciona sin etiquetas condicionales.
Naziman Azlye
1
Sé que esto es bastante tarde, pero ¿te importaría agregar el comentario anterior como respuesta? Esta pregunta tiene bastantes votos a favor y tener una respuesta adecuada lo hace más obvio. ¡Gracias por adelantado!
kraftner

Respuestas:

1

Creo que puedes usar 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; ?>

y para ordenar su publicación puede usar la orden y el orden, consulte la referencia https://codex.wordpress.org/Class_Reference/WP_Query

Taj Khan
fuente