Obține postări WordPress după categorie
Am următorul fragment de cod:
$args = array(
'posts_per_page' => -1,
'category' => 7,
'orderby' => 'name',
'order' => 'ASC',
'post_type' => 'product'
);
$posts = get_posts($args);var_dump($posts);
Acest cod ar trebui să returneze o postare despre care știu că există în categorie, dar nu o face. Dacă las afară argumentul 'category', primesc toate produsele, deci știu că ar trebui să funcționeze normal. Dacă schimb categoria la 1 și scot tipul meu personalizat de postare (product), primesc postările mele implicite.
Nu pot să văd care este problema. Poate cineva să observe care este problema?

Cel mai probabil folosești o taxonomie personalizată, și nu taxonomia încorporată category
. În acest caz, parametrii pentru categorii nu vor funcționa. Va trebui să folosești un tax_query
pentru a interoga articole dintr-un anumit termen. (Reține, get_posts
utilizează WP_Query
, deci poți pasa orice parametru din WP_Query
către get_posts
)
$args = [
'post_type' => 'product',
'tax_query' => [
[
'taxonomy' => 'my_custom_taxonomy',
'terms' => 7,
'include_children' => false // Elimină dacă ai nevoie de articole din termenii copii ai termenului 7
],
],
// Restul argumentelor tale
];
RESURSE ADIȚIONALE

<ul>
<?php
$args = array( 'posts_per_page' => 5, 'offset'=> 1, 'category' => 1 );
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach;
wp_reset_postdata();?>
</ul>
Poate acest lucru vă va ajuta.
Mulțumesc

De la ce 'post_type' va obține acum linkurile, 5 în cazul tău? După părerea mea, el vrea conținutul din produse (după cum înțeleg, un CPT) și nimic din postările obișnuite.

transmite ID-ul categoriei tale în argumente și din postările obișnuite vei obține 5 postări.

Citește întrebarea lui, te rog. Nu am întotdeauna dreptate, dar în acest caz el vrea 'ceva' de la un Custom Post Type cu numele Product.

Charles are dreptate în acest caz. Știu cum să obțin datele odată ce am postările mele. Problema era că nu obțineam postările mele personalizate :)
