web-dev-qa-db-fra.com

Comment parcourir une boucle Wordpress appelée à partir d'une fonction de filtrage?

J'essaie donc de renseigner une zone de sélection Champs personnalisés avancés avec un tableau compliqué de Nice basé sur certaines données de publication. J'ai essayé de le faire en effectuant une requête personnalisée et en parcourant les publications renvoyées.

Malheureusement, la boucle semble revenir squatter. Lors de mon installation de test, il devrait renvoyer 10 messages. Cependant, le var_dump dans l'instruction ci-dessous renverra NULL 10 fois. Si vous définissez get_post($post) dans la boucle, le premier résultat sera renvoyé.

Bizarrement, var_dumping $hw_selectbox_query retournera un objet apparemment correct. Il est donc clair que la boucle elle-même ne définit pas l'objet $post. Je pourrais exécuter une boucle foreach dans la requête renvoyée, mais cela ne semble pas être la bonne façon de le faire.

FWIW, la fonction s’exécute parfaitement quand elle est placée sur une page d’accueil vierge.

function populate_selectbox_field( $field ){

    $field['choices'] = array();

    $hw_selectbox_args = array(
        post_type => 'custom_post_type',
        orderby => 'title',
        order => 'ASC',
        posts_per_page => -1
    );

    $hw_selectbox_query = new WP_Query($hw_selectbox_args);

    if ( $hw_selectbox_query->have_posts() ) : while ( $hw_selectbox_query->have_posts() ) : $hw_selectbox_query->the_post();

        var_dump($post);

        $field['choices'][$post->ID] = $post->post_title

        // Do more complicated stuff in real life

    endwhile; endif;

    return $field;
}

add_filter('acf/load_field/name=destination_node', 'populate_destination_node_field');
1
Jodi Warren

Lors de l'utilisation d'une requête personnalisée, pour accéder aux informations $post, vous devez référencer post en tant que variable de classe le WP_Query personnalisé.

Depuis que vous avez construit la requête en tant que:
$hw_selectbox_query = new WP_Query($hw_selectbox_args);

Ensuite, vous accéderiez à la variable post de $hw_selectbox_query, comme suit:

var_dump($hw_selectbox_query->post);

Cela vous donnera les informations dont vous avez besoin/souhaitez construire votre tableau $field.

1
cale_b