por que ignore_sticky_posts na consulta post-sticky

8

Todos sabemos que ignore_sticky_posts é usado para excluir postagens fixas da sua consulta personalizada.

Mas por que na página do códice enlace , eles usam ignore_sticky_posts na consulta de posts fixos ??

$args = array(
'posts_per_page' => 1,
'post__in'  => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );

Isso é tão confuso e não faz sentido, você quer e ainda exclui isso?

    
por 吉 宁 22.03.2017 / 07:00

1 resposta

10
  

Todos sabemos que ignore_sticky_posts é utilizado para excluir postagens fixas da sua consulta personalizada.

- Não, essa suposição está errada.

Qual ignore_sticky_posts significa:

Mesmo em inglês natural, ignore_sticky_posts parece que o WordPress deve ignorar todas as postagens da consulta, o que, na realidade, não é o que o WordPress faz. Em vez disso, você deve ler o argumento 'ignore_sticky_posts' => 1 da seguinte maneira:

  

Quando ignore_sticky_posts é definido como true ou 1 , o WordPress ignorará o procedimento de definir as postagens fixas na sua consulta personalizada.

O que o WordPress faz quando ignore_sticky_posts não está definido:

Para entender claramente o que o 'ignore_sticky_posts' => 1 faz, você precisa entender o que o WordPress faz quando o argumento ignore_sticky_posts não está definido ou está definido como false ou 0 (por padrão):

  1. Se houver postagens no resultado da consulta que façam parte das postagens do aplicativo, o WordPress as enviará para o topo do resultado da consulta.

  2. Se alguma postagem fixa não estiver presente no resultado da consulta, o WordPress recuperará todas as postagens do banco de dados novamente e as colocará no topo do resultado da consulta.

Assim, quando o argumento é definido como 'ignore_sticky_posts' => 1 , o WordPress simplesmente ignora o procedimento acima , isso é tudo. Isso não os exclui especificamente. Para isso, você precisa definir o argumento post__not_in .

Explicação do exemplo do códice:

Agora, vamos ao exemplo do códice:

$args = array(
    'posts_per_page' => 1,
    'post__in'  => get_option( 'sticky_posts' ),
    'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );

Aqui, o codex está apenas definindo 'ignore_sticky_posts' => 1 para ser eficiente, nada mais . Mesmo sem tê-lo, você obterá o mesmo resultado esperado:

$args = array(
    'posts_per_page' => 1,
    'post__in'  => get_option( 'sticky_posts' )
);
$query = new WP_Query( $args );

No entanto, neste caso, como o argumento 'ignore_sticky_posts' => 1 não está definido, o WordPress fará desnecessariamente todos os procedimentos de configuração de postagens fixas na parte superior dos resultados, mesmo que todos esses resultados (deste exemplo) sejam apenas rígidos posts.

A melhor maneira de aprender algo no WordPress é examinar o CÓDIGO principal. Assim, para um entendimento ainda mais claro, examine esta parte do CÓDIGO DO WordPress .

    
por Fayaz 22.03.2017 / 08:53