Wordpress get_posts per categoria

30 giu 2015, 22:57:23
Visualizzazioni: 153K
Voti: 11

Ho il seguente pezzo di codice:

$args = array(
    'posts_per_page'   => -1,
    'category'         => 7,
    'orderby'          => 'name',
    'order'            => 'ASC',
    'post_type'        => 'product'
);

$posts = get_posts($args);var_dump($posts);

Questo dovrebbe restituire un post che so essere nella categoria, ma non lo fa. Se ometto l'argomento 'category', ottengo tutti i prodotti, quindi so che normalmente dovrebbe funzionare. Se cambio la categoria in 1 e tolgo il mio tipo di post personalizzato (product), ottengo i miei post predefiniti.

Non riesco a capire qual è il problema. Qualcuno riesce a individuare dove sta l'errore?

3
Commenti

Non dovrebbe essere il nome della tassonomia invece della categoria?

Robert hue Robert hue
30 giu 2015 23:02:03

Ho provato, ma non ha funzionato. Ho preso questo dalla pagina del codex di WordPress, che sembra supportare il mio approccio, ma comunque non funziona: "Nota: Il parametro category deve essere l'ID della categoria, e non il nome della categoria."

Michiel Standaert Michiel Standaert
30 giu 2015 23:16:34

Il valore -1 in posts_per_page mostrerà TUTTI i post e non appena ometti il CPT, wp "torna indietro" ai post regolari come hai già scoperto da solo.

Charles Charles
1 lug 2015 07:49:51
Tutte le risposte alla domanda 2
0
24

Con ogni probabilità stai utilizzando una tassonomia personalizzata, e non la tassonomia predefinita category. Se questo è il caso, allora i parametri della categoria non funzioneranno. Avrai bisogno di una tax_query per interrogare i post da uno specifico termine. (Ricorda, get_posts utilizza WP_Query, quindi puoi passare qualsiasi parametro da WP_Query a get_posts)

$args = [
    'post_type' => 'product',
    'tax_query' => [
        [
            'taxonomy' => 'my_custom_taxonomy',
            'terms' => 7,
            'include_children' => false // Rimuovi se hai bisogno di post dai termini figli del termine 7
        ],
    ],
    // Resto dei tuoi argomenti
];

RISORSE AGGIUNTIVE

1 lug 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>

Forse questo potrà aiutarti.

Grazie

1 lug 2015 06:30:32
Commenti

Sarebbe ottimo avere qualche spiegazione.

Nilambar Sharma Nilambar Sharma
1 lug 2015 06:49:59

Da quale 'post_type' otterrà ora i links, 5 nel tuo caso? Secondo me vuole il contenuto dei prodotti (come ho capito un CPT) e niente dai post regolari.

Charles Charles
1 lug 2015 07:14:14

passa il tuo ID della categoria negli argomenti e dai post regolari otterrai 5 post.

Rohit Gilbile Rohit Gilbile
1 lug 2015 07:33:20

Per favore leggi la sua domanda, non ho sempre ragione ma in questo caso lui vuole 'qualcosa' da un Custom Post Type con il nome Product.

Charles Charles
1 lug 2015 07:44:49

Charles ha ragione in questo caso. So come ottenere i dati una volta che ho i miei post. Il problema era che non stavo ottenendo i miei custom post :)

Michiel Standaert Michiel Standaert
1 lug 2015 11:56:31

@Rohitgilbile come includere l'immagine in evidenza all'interno del ciclo foreach?

user2584538 user2584538
9 mag 2018 13:11:25
Mostra i restanti 1 commenti