Problème avec la requête WordPress sur la page utilisant des champs personnalisés

Publié par Jean-Michel le

J’ai un site Web avec le type de publication personnalisé sammenligne , ainsi que des champs personnalisés créés à l’aide des champs personnalisés avancés (ACF). J’ai modifié un site d’archive (archive-sammenligne.php) qui affiche les données comme je le souhaite, cependant lorsque j’essaie d’extraire les données à l’aide d’une requête WP sur une page, je n’obtiens aucune sortie. Si j’utilise les titres WordPress standard, j’obtiens une sortie. Je suppose qu’il y a quelque chose avec le lien vers les champs personnalisés ; mais ils travaillent sur la page d’archives.

J’ai besoin d’exécuter la requête sur une page WordPress , pas une archive, car j’aimerais avoir du contenu posté au-dessus de la boucle. Le code ci-dessous est enregistré en tant que modèle de page.

J’utilise Genesis Metro Pro et WordPress.

Merci d’avance.

<?php
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
function sk_display_custom_fields() {
/*Custom fields/*
    $navn = get_field( 'navn' );
    $type = get_field( 'type' );
    $fordeler = get_field( 'fordeler' );
/*Wordpress loop*/
    $arg = array(
            'post_type' => 'sammenligne',
            'posts_per_page' => 10,
            'order' => 'DESC',
            'post_status' => 'publish'
            );
    $query = new WP_Query($arg);
    if ( $query->have_posts() ) :
        while ( $query->have_posts() ) : $query->the_post();
            echo '<h2>' . $navn . '</h2>';
        endwhile;
    endif;
    wp_reset_query();
}
add_action( 'genesis_entry_header', 'sk_display_custom_fields' );

    genesis();

Solution n°1 trouvée

oui ça marche sur mon autre site archive-sammenligne.php, qui est le fichier archive du slug sammenligne.

Il s’agit de la sortie des champs personnalisés avancés. J’ai supprimé les autres champs (j’en ai environ 20).

if(function_exists("register_field_group"))
{
    register_field_group(array (
        'id' => 'acf_kredittkort',
        'title' => 'Kredittkort',
        'fields' => array (
            array (
                'key' => 'field_5412c743d82aa',
                'label' => 'Navn',
                'name' => 'navn',
                'type' => 'text',
                'required' => 1,
                'default_value' => '',
                'placeholder' => '',
                'prepend' => '',
                'append' => '',
                'formatting' => 'html',
                'maxlength' => '',
            ),
            array (
                'key' => 'field_5412c7e2d82ad',
                'label' => 'Maksgrense',
                'name' => 'maksgrense',
                'type' => 'number',
                'default_value' => '',
                'placeholder' => '',
                'prepend' => '',
                'append' => '',
                'min' => '',
                'max' => '',
                'step' => '',
            ),
        ),
        'location' => array (
            array (
                array (
                    'param' => 'post_type',
                    'operator' => '==',
                    'value' => 'sammenligne',
                    'order_no' => 0,
                    'group_no' => 0,
                ),
            ),
        ),
        'options' => array (
            'position' => 'acf_after_title',
            'layout' => 'no_box',
            'hide_on_screen' => array (
            ),
        ),
        'menu_order' => 0,
    ));
}

Solution n°2 trouvée

Éditer ://

essaye ça:

<?php
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
function sk_display_custom_fields() {
/*Wordpress loop*/
    global $wp_query;
    query_posts(array(
    'post_type' => 'sammenligne'
    ));

    while(have_posts()) : the_post(); ?>
$navn = get_field( 'navn' );
$type = get_field( 'type' );
echo '<p>',$navn , '__', '$type','</p>');
    endwhile;
    wp_reset_query();
}
add_action( 'genesis_entry_header', 'sk_display_custom_fields' );

genesis();

METTRE À JOUR://

Ok, j’ai testé ACF maintenant. Avec le code suivant, vous pouvez cibler des champs personnalisés de publications à partir d’un type de publication personnalisé sans être sur un site d’archives !

<?php

    // create custom loop to query the custom posttype
    $arg = array(
    'post_type' => 'sammenligne',
    'posts_per_page' => 10,
    'order' => 'DESC',
    'post_status' => 'publish'
    );

    $query = new WP_Query($arg);

// then start the query
if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();
            // now go get the fields you want !
            $field1 = get_field('test1');
            // output the fields in the format you want
            echo $field1;
    endwhile;
endif;
wp_reset_query(); // reset query

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *