Obține Articole dintr-o Categorie de Tip Custom Post

7 mai 2013, 07:29:27
Vizualizări: 60.6K
Voturi: 6

Am probleme în obținerea articolelor dintr-o categorie de tip custom post. Am codul de mai jos dar nu funcționează corect. Încă obține articole din alte categorii.

<?php
    $query = null;
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array(
        'post_type' => get_post_type(),
        'post_status' => 'publish',
        'paged' => $paged,
        'post_type_cat' => 'featured', // get_post_type() va returna post_type, am adăugat _cat -> post_type_cat
        //'orderby' => 'rand',
        'posts_per_page' => 1,
        'meta_query' => array(
            array(
                'key' => '_expiration_date',
                'value' => array(0, current_time('timestamp')),
                'compare' => 'BETWEEN'
                )),
            );
    $query = new WP_Query($args);
?>
<?php if ( $query->have_posts() ) : $query->the_post(); ?>
<?php get_template_part( 'template/featured' ); ?>
<?php else : ?>
<?php get_template_part( 'template/nofeatured' ); ?>
<?php endif; ?>
<?php wp_reset_query(); ?>

Mă puteți ajuta?

Mulțumesc

1
Comentarii

Care este numele categoriei?

montrealist montrealist
7 mai 2013 07:59:15
Toate răspunsurile la întrebare 3
5

Din câte știu eu, nu există un parametru numit post_type_cat, dacă doriți să interogați postări, trebuie să folosiți fie cat, fie, dacă interogați postări într-o taxonomie personalizată, ar trebui să folosiți o interogare de taxonomie.

Exemplu de interogare după categorie:

$query = new WP_Query( 'cat=2,6,17,38' );

sau

$query = new WP_Query( 'category_name=staff' );

Consultați următoarea intrare din Codex pentru mai multe modalități de interogare după categorie:

http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

Exemplu de interogare după taxonomie:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'people',
            'field' => 'slug', // poate fi setat la ID
            'terms' => 'bob' // dacă câmpul este ID, puteți face referire la numărul categoriei/termenului
        )
    )
);
$query = new WP_Query( $args );

Consultați această intrare pentru mai multe detalii:

http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

7 mai 2013 09:01:56
Comentarii

nu funcționează :(

djack109 djack109
30 mai 2020 14:08:52

@djack109 Funcționează. Te rog să consulți https://developer.wordpress.org/reference/classes/wp_query. Dacă încă ai probleme după aceasta, atunci consideră să creezi o întrebare pentru ca oamenii să te poată ajuta.

Adam Adam
31 mai 2020 18:03:08

Am reușit să-l fac să funcționeze, vezi mai jos

djack109 djack109
31 mai 2020 19:19:22

în acest caz, people este o categorie?

Karue Benson Karue Karue Benson Karue
2 iun. 2020 14:50:49

@KarueBensonKarue people este taxonomia. În WordPress aveți category care este taxonomia implicită pentru articole și puteți avea taxonomii personalizate care vă permit să creați orice alt tip de taxonomie, cum ar fi people în acest caz. Cel mai bine este să gândiți toate "categoriile" din WP ca aparținând unei forme de taxonomie. Poate fi puțin confuz pentru începători. Deci, pe scurt, în WP taxonomia category se aplică implicit la post_type=post, dar poate fi atașată și la alte tipuri de postări, exact ca taxonomiile personalizate sau puteți crea o taxonomie personalizată pentru orice alt scop.

Adam Adam
5 iun. 2020 23:22:24
0

Nu am reușit să fac nimic din cele de mai sus să funcționeze. Fie returnau totul, fie nimic. Așa că după câteva încercări și erori, am făcut asta:-

id este slug-ul categoriei pe care o doresc.

if (isset($_GET["id"])) {

    $id = $_GET["id"];

    echo $id;

    $id = get_category_by_slug( $_GET["id"] );

    if (isset($id)) {
        $id = $id->term_id;

        $args = array(
            'post_status' => 'publish',
            'post_type' => 'Products',
            'cat' => $id,
        );
    }
}

$query = new WP_Query($args);

Sunt nou în WordPress, după ce am programat în aproape orice alt limbaj, și nu am idee dacă acesta este un mod bun sau prost de a face lucrurile, știu doar că funcționează pentru nevoile mele :)

30 mai 2020 14:10:33
0

Știu că acest lucru este vechi, dar nu am reușit să găsesc un răspuns clar. Deci, iată ce a funcționat pentru mine:

Versiunea WP_Query:

$args = array(
    "post_type"      => "story",
    "story-category" =>  $category->slug
);
$query = new WP_Query( $args );


Versiunea get_posts:

$stories = get_posts([
    "post_type"      =>  "story",
    "story-category" =>  $category->slug       
 ]);

Este atât de simplu. Trebuie doar să treci tipul de postare personalizată, iar apoi slug-ul categoriei într-un parametru cu același nume ca și slug-ul categoriei de postare personalizată. Sper că acest lucru are sens :)

11 feb. 2024 23:52:30