Problème avec la requête WordPress sur la page utilisant des champs personnalisés
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
0 commentaire