Obține postări WordPress după categorie

30 iun. 2015, 22:57:23
Vizualizări: 153K
Voturi: 11

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?

3
Comentarii

Nu ar trebui să fie numele taxonomiei în loc de categorie?

Robert hue Robert hue
30 iun. 2015 23:02:03

Am încercat, dar nu a funcționat. Am luat asta de pe pagina codex a WordPress, care pare să-mi susțină abordarea, dar totuși nu funcționează: "Notă: Parametrul category trebuie să fie ID-ul categoriei, nu numele categoriei."

Michiel Standaert Michiel Standaert
30 iun. 2015 23:16:34

Valoarea -1 în posts_per_page va afișa TOATE articolele și de îndată ce omiți CPT, WordPress va "recurge" la articolele obișnuite, așa cum ai descoperit deja singur.

Charles Charles
1 iul. 2015 07:49:51
Toate răspunsurile la întrebare 2
0
24

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

1 iul. 2015 09:00:38
6
<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

1 iul. 2015 06:30:32
Comentarii

O explicație ar fi minunată.

Nilambar Sharma Nilambar Sharma
1 iul. 2015 06:49:59

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.

Charles Charles
1 iul. 2015 07:14:14

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

Rohit Gilbile Rohit Gilbile
1 iul. 2015 07:33:20

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 Charles
1 iul. 2015 07:44:49

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 :)

Michiel Standaert Michiel Standaert
1 iul. 2015 11:56:31

@Rohitgilbile cum să includ imaginea reprezentativă în interiorul buclei foreach ?

user2584538 user2584538
9 mai 2018 13:11:25
Arată celelalte 1 comentarii