Pregunta

El siguiente fragmento es de un widget de barra lateral que enumera los "envíos recientes". Desde su en la página principal y destaco mi lastest posterior pegajosa prominente en esa página, quiero pasar por alto la pegajosa en este bucle. Sin embargo, el post_not_in=sticky_posts no tiene ningún efecto.

<?php
    $the_query = new WP_Query("showposts=$number&offset=1&order=ASC&post_not_in=sticky_posts");

    while ($the_query->have_posts()) : $the_query->the_post();
        $do_not_duplicate = $post->ID; ?>
¿Fue útil?

Solución

Tomé @ La respuesta de tnorthcutt de WordPress Codex sobre query_posts() sobre Parámetros pegajosos y ha creado un ejemplo tandalone que puede caer como test.php en la raíz de su sitio web y ver correr por navegar a un URL como esta, con su dominio sustituido:

http://example.com/test.php

Algunas notas sobre el código; Tuve que usar una serie equivalente de la cadena de consulta que pasó a WP_Query() porque el argumento post__no_in no puede ser transferido como una cadena separada por comas (no estoy seguro por qué, probablemente un descuido?).

También quería asegurarse de que sabe que a partir de un offset=1 (en lugar de offset=0) significa que va a estar excluyendo el primer puesto que de otro modo sería devuelto por la consulta. Por supuesto, usted todavía consigue el número de puestos especificados por $number suponiendo que tiene que muchos mensajes aplicables 1. Así que aquí está el código:

<?php
header('Content-Type:text/plain');
include "wp-load.php";

$number = 5;

$the_query = new WP_Query(array(
  'showposts' => $number,
  'offset' => 1,  // This will cause the query to skip over first post
  'order' => 'ASC',
  'post__not_in' => get_option("sticky_posts"),
  ));
while ($the_query->have_posts()) : $the_query->the_post();
  the_title(); 
endwhile;

Otros consejos

Si desea excluir todos los mensajes pegajosos de una consulta, el uso

query_posts(array("post__not_in" =>get_option("sticky_posts")));

(de el códice )

Parece como si sólo funcionará en 3.0 o mayor, sin embargo: http : //wordpress.org/support/topic/excluding-sticky-posts-using-query_posts

Edit: en respuesta a su comentario a continuación, intente esto (no estoy seguro de que este trabajo, pero espero que le ayudará a utilizar):

<?php 
$args=array(
    'showposts'=>'$number',
    'offset'=>'1',
    'order'=>'ASC',
    'post__not_in'=>get_option("sticky_posts")
    );
$the_query = new WP_Query($args);

    while ($the_query->have_posts()) : $the_query->the_post();

        $do_not_duplicate = $post->ID; ?>
Licenciado bajo: CC-BY-SA con atribución
scroll top