Excluir la Entrada Actual del Bucle de Entradas Recientes

18 sept 2011, 00:13:16
Vistas: 51.9K
Votos: 12

¿Cuál sería la mejor manera de excluir la entrada actual que estoy visualizando de esta consulta de entradas recientes? ¡Gracias!

<?php
            // Obtener la variable global post
            global $post;
            if (in_category('top-lists')) {
                $myposts2 = get_posts('numberposts=5&offset=0&category=7&post__not_in=' . array($post->ID));
            }
            else if (in_category('playlists') || in_category('playlistall')) {
                $myposts2 = get_posts('numberposts=5&offset=0&category=6,37&post__not_in=' . array($post->ID));
            }
            else if (in_category('news') || in_category('news')) {
                    $myposts2 = get_posts('numberposts=5&offset=0&category=95&post__not_in=' . array($post->ID));
            }
            else {
                $myposts2 = get_posts('numberposts=5&offset=0&category=-6,-7,-37,-95,-177&post__not_in=' . array($post->ID));
            }

            foreach($myposts2 as $post) :
            ?>
0
Todas las respuestas a la pregunta 3
7
38

El argumento post__not_in debería funcionar perfectamente para ti:

$args = array(
    'numberposts' => 5,
    'offset' => 0,
    'category' => 7,
    'post__not_in' => array( $post->ID )
);
$myposts2 = get_posts($args);
18 sept 2011 04:08:25
Comentarios

@kaiser y Brian - Gracias por responderme, puse el código pero estoy obteniendo un error de map_array ----

Warning: array_map() [function.array-map]: Argument #2 should be an array in /home/sitemain/public_html/wp-includes/query.php on line 1709

Warning: implode() [function.implode]: Invalid arguments passed in /home/sitemain/public_html/wp-includes/query.php on line 1709

Chad Chad
19 sept 2011 20:38:33

Prueba con la última edición. Introduce tus argumentos en un array.

Brian Fegter Brian Fegter
19 sept 2011 21:01:03

¿Eh? ¿Por qué a mí? @Brian Fegter ya respondió. :)

kaiser kaiser
19 sept 2011 21:08:44

ja :) Estoy bien. Siempre contento de ayudar.

Brian Fegter Brian Fegter
19 sept 2011 21:22:43

Perfecto, gracias a todos especialmente a @BrianFegter !

Chad Chad
21 sept 2011 06:53:55

Actualmente estoy usando esto <?php $catquery = new WP_Query( 'cat=1&posts_per_page=5' ); ?>. ¿Cómo implemento el tuyo en el mío? ¡Gracias!

Jornes Jornes
10 abr 2020 19:19:35

@Jornes Puedes simplemente usar 'cat' => 1, 'posts_per_page' => 5 en el ejemplo anterior.

Brian Fegter Brian Fegter
14 abr 2020 00:05:28
Mostrar los 2 comentarios restantes
0

Añade esto a tus $args

'post__not_in' => array( get_the_ID() )

De esta manera no tendrás que lidiar con obtener el ID del post actual y potencialmente evitarás errores al obtener tu ID. La función get_the_ID() simplemente obtiene el ID por ti para que no tengas que preocuparte o hacer nada adicional.

3 dic 2018 06:17:08
0

Agrega el siguiente código en el archivo functions.php del tema activo:

    function be_exclude_current_post( $args ) {
        if( is_singular() && !isset( $args['post__in'] ) )
            $args['post__not_in'] = array( get_the_ID() );
        return $args;
    }
    add_filter( 'widget_posts_args', 'be_exclude_current_post' );
28 mar 2017 15:12:38