WordPressのループとwp_query()から粘着性の投稿を除外しますか?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/958

  •  16-10-2019
  •  | 
  •  

質問

次のスニペットは、「最近の投稿」をリストするサイドバーウィジェットからのものです。ホームページに載っていて、そのページで最も残りの粘着性の投稿を目立たせているので、このループの粘着性をスキップしたいと思います。しかし post_not_in=sticky_posts 効果はありません。

<?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; ?>
役に立ちましたか?

解決

私が取った @tnorthcutt's からの回答 WordPressのコーデックス query_posts() 粘着性パラメーターについて ドロップできるタンダロンの例を作成しました test.php あなたのウェブサイトのルートに、そしてあなたのドメインを置き換えて、このようなURLにナビゲートすることによってそれが実行されることを確認してください:

http://example.com/test.php

コードに関するいくつかのメモ。私は使わなければなりませんでした クエリ文字列に相当する配列 あなたは渡しました WP_Query() なぜなら post__no_in カンマの区切り文字列として議論を渡すことはできません(なぜ、おそらく監視されますか?)。

また、私はあなたがそれから始めていることをあなたが知っていることを確認したかった offset=1 (それ以外の offset=0)つまり、クエリによって返される最初の投稿を除外することを意味します。もちろん、あなたはまだによって指定された投稿の数を取得します $number 該当する投稿+1の多くの投稿があると仮定します。これがコードです:

<?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;

他のヒント

クエリからすべての粘着性の投稿を除外したい場合は、使用してください。

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

(から コーデックス)

ただし、それは3.0以下でのみ動作します。 http://wordpress.org/support/topic/excluding-sticky-posts-using-query_posts

編集:以下のコメントに応えて、これを試してください(これがうまくいくかどうかはわかりませんが、うまくいけば始めてください):

<?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; ?>
ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top