- Statut : non résolu
- Ce sujet contient 6 réponses, 2 participants et a été mis à jour pour la dernière fois par pandroid, le il y a 9 années et 6 mois.
-
AuteurMessages
-
27 mars 2015 à 13 h 41 min #548338
– Version de WordPress : 4.1.1
– Thème utilisé : Perso
– Nom de l’hebergeur : 1&1
– Adresse du site : http://www.soykje.com/testeur/Bonjour à tous,
Je me permets de poster ici pour un problème sur lequel je m’arrache les cheveux depuis plusieurs jours ! En effet, pour le thème que je développe, j’ai donc un custom post type via lequel je définis une image de page d’accueil. Jusque là tout va bien, mon CPT est créé et l’utilisateur pourra charger son image dans un article du CPT prévu à cet effet. Oui mais… Si l’on modifie l’image de cet article, c’est toujours l’ancienne image qui est retournée en front !!!
J’ai testé en utilisant the_content(), et là ça marche comme il faut… Sauf que, bien entendu, il me faut une url d’image pour ma page d’accueil (d’où l’utilisation de wp_get_attachment_url), pas l’image :'(
Je vous transmets donc mon code, n’étant pas encore très familier des CPT il est plus que probable qu’une erreur m’ait échappé…
Déclaration du CPT « Image d’accueil » (dans un .php appelé par functions.php) :
<?php
add_action( 'init', 'register_homeimg' );
function register_homeimg() {
register_post_type('homeimg',
array(
'labels' => array(
‘name’ => ‘Image d’accueil’,
‘singular_name’ => ‘Image d’accueil’,
‘add_new’ => ‘Ajouter une image d’accueil’,
‘add_new_item’ => ‘Ajouter une nouvelle image d’accueil’,
‘edit_item’ => ‘Editer une image d’accueil’,
‘new_item’ => ‘Nouvelle image d’accueil’,
‘view_item’ => ‘Voir l’image d’accueil’,
‘search_items’ => ‘Rechercher une image d’accueil’,
‘not_found’ => ‘Aucune image d’accueil’,
‘not_found_in_trash’ => ‘Aucune image d’accueil dans la corbeille’,
‘parent_item_colon’ => »,
‘menu_name’ => ‘Image d’accueil’
),
‘public’ => true,
‘show_ui’ => true,
‘menu_icon’ => ‘dashicons-format-image’,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘menu_position’ => 6,
‘supports’ => array(‘title’,’editor’)
));
}
?>Page d’accueil :
<?php
/*
Template Name: Accueil
*/
?>
<?php get_header(); ?>
<section id="content" class="home">
<?php $mainimg = new WP_Query('post_type=homeimg'); ?>
<?php while ($mainimg -> have_posts()) : $mainimg -> the_post(); ?>
<?php
$args = array(
'post_type' => ‘attachment’,
‘post_parent’ => $post->ID,
‘post_status’ => null,
‘numberposts’ => 1
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) { ?>
<p style="background-image:url(<?php echo wp_get_attachment_url($attachment->ID); ?>) »></p>
<?php
}
}
?>
<?php endwhile; ?>
</section>
<?php get_footer(); ?>J’ai pourtant lu et relu mon code, et je ne vois honnêtement pas pourquoi celui-ci ne marche pas. Enfin je présume que si the_content() fonctionne, il faut chercher du côté du code de la page d’accueil… ?
Voilà, je m’en remets à vous, merci d’avance pour vos conseils et votre aide !
27 mars 2015 à 18 h 39 min #999599bonjour,
As tu une sauvegarde quelque part?
commeadd_action(‘save_post’, ‘save_homeimg’); //function pour la sauvegarde de champs personnalisés
function save_homeimg()
{}29 mars 2015 à 13 h 28 min #999600Bonjour,
En fait la simple déclaration register_post_type (avec le add_action qui correspond, bien sûr) inclut déjà l’enregistrement de la donnée. Pour preuve d’ailleurs, et comme j’ai pu le re-tester à l’instant, si j’utilise le code suivant pour ma page d’accueil…
<section id="content" class="home">
have_posts()) : $mainimg -> the_post(); ?>
// en remplacement du ‘wp_get_attachment_url’
</section>… alors mes modifications sur le CPT sont bien prises en compte, en direct comme ce devrait être le cas ! Ce qui confirmerait donc, a priori, un problème du côté de l’utilisation de la fonction wp_get_attachment_url, ou du moins son utilisation dans un contexte de CPT…
Quelqu’un aurait-il déjà rencontré ce genre de difficulté ? Mon utilisation de la fonction wp_get_attachment_url est peut-être incorrecte… ?
Dans tous les cas, merci d’avance pour vos réponses !
30 mars 2015 à 5 h 13 min #999602que donne echo wp_get_attachment_url($attachment->ID) ? il y a quelque chose ou c’est vide?
30 mars 2015 à 7 h 34 min #999603Bonjour,
Comme je l’ai indiqué en début de post, un site-test est dispo ici : http://www.soykje.com/testeur/…
Comme tu pourras le voir, le code retourne bien un contenu (page d’accueil), mais il s’agit de la première image uploadée dans l’article du CPT. Par la suite, j’avais voulu modifier cette image, mais cette modification n’est malheureusement pas prise en compte (d’où mon topic au départ) lorsque j’utilise wp_get_attachment_url.
A l’inverse, si j’utilise the_content, les modifications sont bien prises en compte et c’est bien la dernière modification qui est affichée. Mais comme je l’ai dit précédemment, c’est l’url qui m’intéresse dans le cadre de mon intégration, et pas l’image en tant que contenu…Des idées ?
30 mars 2015 à 8 h 16 min #999601okay.
oui, pardon, je n’avais pas lu le lien.Juste une question au passage, pourquoi une boucle while ?
(je pose la question car j’avais un cas qui m’envoyait toujours la même chose, et c’était à cause de la boucle)30 mars 2015 à 9 h 48 min #999604Bonjour,
J’utilise une boucle « classique », pour récupérer le contenu de mon CPT, vu qu’il est déclaré comme un post… Sauf erreur de ma part (je suis pas expert non plus), c’est la chose à faire.
Enfin, comme je le disais à l’instant, la fonction the_content me retourne bien le contenu que je souhaite, mais la fonction wp_get_attachment_url, qui devrait fonctionner de façon similaire pour me retourner l’url des pièces joints du post, elle ne fonctionne pas correctement apparemment… Du coup je pense vraiment qu’il s’agit d’un problème de ce côté là… Peut-être que je n’utilise pas la fonction correctement, dans ce contexte ? -
AuteurMessages
- Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.