私はウェブサイトを作っています。最新のアップデートの欄があります。これは私が今持っているコードです。私は本当にPHPコーディングが得意ではありません。誰かから指導を受けたいです。
<?php
$postslist = get_posts('numberposts=1&order=DESC&orderby=date');
foreach ($postslist as $post) :
setup_postdata($post);
?>
<?php the_excerpt(); ?>
<p class="date"><?php echo get_the_date(); ?></p>
<span class="button">
<a href="<?php the_permalink(); ?>">Read More</a>
しかし、私は特定のカテゴリからいくつかの投稿を除外したいと思います。それを実現するための解決策はありますか?ありがとうございました!
Timによる答えに加えて、常に適切な tax_query
を使うことができます。すべての組み込みタグおよびカテゴリー・パラメーターは、SQL照会用のJOIN
文節を作成するためにtax_query
クラスに渡される前に、適切なWP_Tax_Query
に変換されます。
ほとんどすべてのアプリケーションでtax_query
を使用しています。特に子の用語、複数の用語の除外、さらには複数の分類法の場合には、柔軟性が非常に高いからです。 tax_query
は配列なので、ここでは文字列の構文をOPのように使用することはできません。クエリ引数には配列の構文を使用する必要があります。
つまり、カテゴリを除外するために、次のことを試すことができます。
$args = [
// Your other args
'tax_query' => [
[
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => [1,2,3], // Array of term ids to exclude
'operator' => 'NOT IN', // Exclude
'exclude_children' => false // Do not exclude the child terms from the terms defined to exclude
]
]
];
$postslist = get_posts( $args );
get_posts() のドキュメントをちょっと見てみると、そのカテゴリに基づいて投稿を除外できるようには見えません。
EDIT:実際には、 AntonChanning のおかげで、できることがわかりました - 引数文字列に&cat=-1
を追加するだけです。1は、除外するカテゴリのIDです。
$postslist = get_posts('numberposts=1&order=DESC&orderby=date&cat=-1');
必要ならば、これに複数のカテゴリを追加することもできます。 cat=-1,-2,-3
これを行うための望ましい 'Wordpressのやり方'は WP_Queryを使用する です。
get_posts()
を呼び出す代わりに、このようにしたい場合は、WP_Queryの新しいインスタンスを作成し、引数を配列で渡す必要があります。 カテゴリパラメータ の見出しの下にある上記のリンクから:
category__not_in(配列) - カテゴリIDを使う
それが、カテゴリを除外するために使用する必要がある引数です。
$postslist = new WP_Query(array(
"post_type" => "post",
"posts_per_page" => 1,
"order" => "DESC"
"orderby" => "date",
"category__not_in" => 1,
));
get_posts()
の動作を模倣するために 'post'投稿タイプを追加したことに気付くでしょう。そしてposts_per_page
パラメータはWP_Queryで返される投稿数を指定する方法です。
このWP_Queryルートを進む場合に必要なもう1つの変更は、現在持っているwhile
の代わりにforeach
ループを使用することです。 明確な使用例 の下の 使用方法 という見出しがあるので、コピーして貼り付けないようにします。
がんばろう!