- Statut : non résolu
- Ce sujet contient 18 réponses, 2 participants et a été mis à jour pour la dernière fois par Timama, le il y a 9 années et 7 mois.
-
AuteurMessages
-
26 février 2015 à 16 h 53 min #509713
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 4.1.1
– Version de PHP/MySQL :
– Thème utilisé : le mien
– Extensions en place : aucune
– Nom de l’hebergeur : STRATO
– Adresse du site :Problème(s) rencontré(s) :
Bonjour,
J’utilise wp_editor à l’interieur d’un CUSTOM POST TYPE.
J’ai un texte, qui reste dans la fenêtre de l’éditeur. Mais si je fais des modification sur ce texte et que je mets à jour, et bien les modifications ne sont pas sauvegardées.Voici ce que je fais avec ce WP_editor :
add_action(‘admin_init’, ‘evenements_admin_init’); //function pour ajouter des champs personnalisés
function evenements_admin_init()
{ //initialisation des champs spécifiques
add_meta_box(« nom_evenement », « DETAILS DE L’ÉVÈNEMENT « , « details_evenement », « evenements », « normal », « core »);
}
function details_evenement()
{
global $post;
// Details du evenement
$custom_information = get_post_meta( $post->ID);
$information_evenement = $custom_information[« information_evenement »][0];
//$information_evenement = get_post_meta( $post->ID, ‘_event_id1’, true);
?>
<label for="information_evenement"> Détails de l’évènement : </label>
<?php
$settings = array(
'textarea_name' => ‘event_id1’,
‘textarea_rows’ => ‘6’,
‘editor_css’ => ‘<style>#wp-event_id1-wrap { width:50%; left: 170px; } </style>‘,
‘media_buttons’ => false
);
wp_editor($information_evenement, ‘event_id1’, $settings );
}
add_action(‘save_post’, ‘save_custom_evenement’); //function pour la sauvegarde de nos champs personnalisés
function save_custom_evenement()
{ //sauvegarde des champs spécifiques
global $post;
if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
{ // fonction pour éviter le vidage des champs personnalisés lors de la sauvegarde automatique
return $postID;
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_ID, « event_id1 », $_POST[« event_id1 »]);
}
}ALors pour sauver j’ai essayé plusieurs choses comme
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_ID, « $information_evenement », $_POST[« event_id1 »]);
}ou encore
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_ID, « _event_id1 », $_POST[« event_id1 »]);
}Mais cela ne sauve pas les modifications.
Je voudrais savoir si vous avez vu quelque chose qui pourrait me débloquer car là je ne vois plus du tout ….
Surement encore une toute petite bêtise de ma part que je ne vois pas…. comme d’habitude quoi …merci pour votre aide et vos conseils !
Timama26 février 2015 à 19 h 42 min #833400$post->ID ?
26 février 2015 à 21 h 18 min #833401merci pour ta réponse didier07.
Alors, j’ai essayé (je me suis embrouillée aussi …😉 )
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « event_id1 », $_POST[« event_id1 »]);
}(pareil avec les 2 autres code pour sauver, au cas où) mais ça ne sauvegarde pas les modifications.
Je trouve bizarre le fait que ça garde toujours le même texte ….
26 février 2015 à 21 h 26 min #833402if ( isset ( $_POST ) ) {
update_post_meta( $post_id, « event_id1 », $_POST[« event_id1 »]);
}26 février 2015 à 21 h 54 min #833403merci Didier07.
J’ai essayé avec $post_id et d’autre chose car je me demande si j’ai bien compris au final ce $post_id.
Si je ne met pas du tout de update_post_meta, ça donne le même résultat : les modifs ne sont pas sauvées (bon là c’est normal forcement, mais avec mes update, j’obtiens pareil…)Ce qui est sûr c’est que pour un editeur dans une simple metabox, dans mon programme, le code suivant fonctionne :
add_meta_box(‘id_texte1’, ‘Texte n°1’, ‘metabox_Editor_1’, ‘page’, ‘normal’, ‘core’);
function metabox_Editor_1( $post ) {
$texte1 = get_post_meta( $post->ID, ‘content-id1’, true );
wp_editor($texte1, ‘content-id1’ );
}
if ( isset ( $_POST[‘content-id1’] ) ) {
update_post_meta( $post_ID, ‘content-id1’, $_POST[‘content-id1’]);
}Mais dans le cas précis ici de mon problème, le wp_editor est inclu dans un CUSTOM POST TYPE, et là je n’y arrive pas.
J’ai essayé de reprendre la même technique que pour les autres metabox du CPT comme la suivante qui fonctionne :// Preview de l’évènement
$custom_preview = get_post_custom($post->ID);
$preview_evenement = $custom_preview[« preview_evenement »][0];
?>
<label for="preview_evenement"> Preview de l’évènement : </label>
<input size="80" type="text" value=" » name= »preview_evenement »/>
</br>
if(isset($_POST[‘preview_evenement’])){
update_post_meta($post->ID, « preview_evenement », esc_html($_POST[« preview_evenement »]));
}mais cela ne fonctionne pas avec le wp_editor. DU coup, je ne sais pas (après avoir tenté) si c’est un pb avec $post->ID
27 février 2015 à 8 h 35 min #833404Tu n’as pas compris la logique.
add_meta_box(‘id_texte1’, ‘Texte n°1’, ‘metabox_Editor_1’, ‘page’, ‘normal’, ‘core’);
function metabox_Editor_1( $post ) {
$texte1 = get_post_meta( $post->ID, ‘content-id1’, true );
wp_editor($texte1, ‘content-id1’ );
}T’ajoute la boite dans l’admin de WP
Tu lance tes actions supplémentaires AU MOMENT de la sauvegarde du post
add_action( ‘save_post’, ‘save_meta’);
function save_meta( $post ) {
if ( isset ( $_POST[‘content-id1’] ) ) {
update_post_meta( $post_ID, ‘content-id1’, $_POST[‘content-id1’]);
}27 février 2015 à 8 h 37 min #833405PS: Il manque une } pour la fonction save_meta
27 février 2015 à 8 h 50 min #833406merci Didier07 de m’aider 😉
ah oui, pardon Didier07, je met bien aussi :
add_action(‘save_post’,’save_metaboxes’);
ou
add_action(‘save_post’, ‘save_custom_evenement’);avant les update….. je ne met pas tout le code et j’ai oublié de recopier ça.
Le code est long car j’ai plusieurs éléments à chaque fois… humm interférence peut être?
Je vais essayer de ne laisser que le wp_editor pour voir si il fonctionne seul…. aller…encore un test27 février 2015 à 9 h 49 min #833407hummm non, si je met le wp_editor tout seul cela ne change rien … cela ne sauve pas les modifications… bon au cas où, voici le code entier (fichier evenements appelé dans functions.php via include(‘evenements.php’)😉
La SEULE partie qui ne fonctionne pas c’est donc la partie « informations evenements » (ligne 205) utilisant le wp_editor (avant j’utilisais un textarea simple mais je voulais de la mise en forme en plus). Pour cette partie, il y a donc un texte qui ne se modifie pas (les modifs ne sont pas sauvées à la mise à jour)
__(‘Evenements’, ‘post type general name’),
‘singular_name’ => __(‘Evenement’, ‘post type singular name’),
‘add_new’ => __(‘Add New’, ‘Evenements’),
‘add_new_item’ => __(‘Add New Evenements’),
‘edit_item’ => __(‘Edit Evenements’),
‘new_item’ => __(‘New Evenements’),
‘view_item’ => __(‘View Evenements’),
‘search_items’ => __(‘Search Evenements’),
‘not_found’ => __(‘No Evenements found’),
‘not_found_in_trash’ => __(‘No Evenements found in Trash’),
‘parent_item_colon’ => »,
);
$args = array(
‘label’ => __(‘Evenements’),
‘singular_label’ => __(‘Evenement’),
‘public’ => true,
‘show_ui’ => true,
‘_builtin’ => false, // It’s a custom post type, not built in
‘_edit_link’ => ‘post.php?post=%d’,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘rewrite’ => array(« slug » => « evenements »),
‘query_var’ => « evenements », // This goes to the WP_Query schema
‘supports’ => array(‘title’,’thumbnail’) //titre + zone de texte + champs personnalisés + miniature valeur possible : ‘title’,’editor’,’author’,’thumbnail’,’excerpt’
);
register_post_type( ‘evenements’ , $args ); // enregistrement de l’entité evenement basé sur les arguments ci-dessus
}
add_action(« manage_posts_custom_column », « evenements_custom_columns »);
add_filter(« manage_evenements_posts_columns », « evenements_edit_columns »);
function evenements_edit_columns($columns){
$columns = array(
« cb » => « »,
« title » => « Titre »,
« nom_evenement » => « Evenement »,
« date_evenement » => « Date de l’evenement »,
« preview_evenement » => « Preview »,
);
return $columns;
}
function evenements_custom_columns($column){
global $post;
$custom = get_post_custom();
switch ($column) {
case « nom_evenement »:
echo $custom[« nom_evenement »][0];
break;
case « date_evenement »:
echo $custom[« date_evenement »][0];
break;
case « preview_evenement »:
echo $custom[« preview_evenement »][0];
break;
}
}
add_filter(« manage_edit-evenements_sortable_columns », « evenements_date_column_register_sortable »);
add_filter(« request », « evenements_date_column_orderby » );
function evenements_date_column_register_sortable( $columns ) {
$columns[‘date_evenement’] = ‘date_evenement’;
return $columns;
}
function evenements_date_column_orderby( $vars ) {
if ( isset( $vars[‘orderby’] ) && ‘date_evenement’ == $vars[‘orderby’] ) {
$vars = array_merge( $vars, array(
‘meta_key’ => ‘date_evenement’,
‘orderby’ => ‘meta_value_num’
) );
}
return $vars;
}
add_action(‘admin_init’, ‘evenements_admin_init’); //function pour ajouter des champs personnalisés
function evenements_admin_init()
{ //initialisation des champs spécifiques
add_meta_box(« nom_evenement », « DETAILS DE L’ÉVÈNEMENT « , « details_evenement », « evenements », « normal », « core »);
}
function details_evenement()
{
global $post;
// Nom de l’évènement
$custom_nom = get_post_custom($post->ID);
$nom_evenement = $custom_nom[« nom_evenement »][0];
?>
</br> </br>
<label for="nom_evenement"> Nom de l’évènement : </label>
<input size="80" type="text" value=" » name= »nom_evenement »/>
</br> </br></br>
ID);
$date_evenement = $custom_date[« date_evenement »][0];
?>
<label for="date_evenement"> Date de l’évènement : </label>
<input type="text" name="date_evenement" id="date_evenement" value=" » />
</br> </br></br>
ID);
$preview_evenement = $custom_preview[« preview_evenement »][0];
?>
<label for="preview_evenement"> Preview de l’évènement : </label>
<input size="80" type="text" value=" » name= »preview_evenement »/>
</br>
</br> </br></br>
ID, ‘_event_id1’, true); // ne fonctionne pas
$custom_information = get_post_meta($post->ID);
$information_evenement = $custom_information[« information_evenement »][0];
//$information_evenement = get_post_meta($post->ID, ‘_event_id1’, true);
?>
<label for="information_evenement"> Détails de l’évènement : </label>
‘event_id1’,
‘textarea_rows’ => ‘6’,
‘editor_css’ => ‘#wp-event_id1-wrap { width:50%; left: 170px; } ‘,
‘media_buttons’ => false
);
wp_editor($information_evenement, ‘event_id1’, $settings );
?>
</br>
ID, ‘url_docu’, true );
?>
</br></br>
<label for="url_documentation_evenement">Descriptif de l’évènement : </label>
<input id="url_documentation_evenement" style="width: 450px;" type="text" name="url_documentation_evenement" value=" » />
<a href="#" class="button customaddmediaevent"> Télécharger le document pdf </a>
</br>
</br></br>
ID);
$affichage_evenement = $custom_affichage[« affichage_evenement »][0];
?>
</br>
<label for="affichage_evenement"> Paramètre affichage : </label>
<input size="10" type="text" value=" » name= »affichage_evenement »/>
</br>
<?php
echo '= 0 si vous ne voulez pas l'affichage de cet évènement </br> = 1 si vous voulez l’affichage de cet évènement’ ;
?>
</br></br></br></br></br>
<?php
echo '<u><strong>PARAMETRES D’ETAT de l’EVENEMENT </strong></u></br> ‘;
echo ‘Soit « inscription en ligne », soit « complet », soit « compte-rendu »</br>‘;
echo ‘Mettre 1 dans l’état choisi et 0 dans les 2 autres</br>‘;
echo ‘Mettre 0 partout si il n’y a rien à mettre </br>‘;
?>
</br></br>
ID);
$inscriptionenligne_evenement = $custom_inscriptionenligne[« inscriptionenligne_evenement »][0];
?>
<label for="inscriptionenligne_evenement"> Paramètre inscriptionenligne : </label>
<input size="10" type="text" value=" » name= »inscriptionenligne_evenement »/>
</br>
ID);
$complet_evenement = $custom_complet[« complet_evenement »][0];
?>
</br>
<label for="complet_evenement"> Paramètre complet : </label>
<input size="10" type="text" value=" » name= »complet_evenement »/>
</br>
ID);
$compterendu_evenement = $custom_compterendu[« compterendu_evenement »][0];
?>
</br>
<label for="compterendu_evenement"> Paramètre compterendu : </label>
<input size="10" type="text" value=" » name= »compterendu_evenement »/>
ID, ‘url_compterendu’, true );
?>
<input id="url_documentation_compterendu" style="width: 250px;" type="text" name="url_documentation_compterendu" value=" » />
<a href="#" class="button customaddmediac"> Télécharger le compte-rendu en pdf </a>
</br></br></br></br></br>
<?php
echo '<u><strong>PARAMETRES D’AFFICHAGE SELON LES PAGES</strong></u></br> ‘;
echo ‘Ces paramètres ne sont pas à changer. Le programme le fait automatiquement. Ils sont là à titre d’information.</br>‘;
echo ‘L’évènement s’affichera sur chaque page où le paramètre correspondant est égal à 1.</br>‘;
?>
</br></br>
ID);
$accueil_evenement = $custom_accueil[« accueil_evenement »][0];
?>
<label for="accueil_evenement"> Paramètre accueil : </label>
<input size="10" type="text" value=" » name= »accueil_evenement »/>
</br>
ID);
$activite_evenement = $custom_activite[« activite_evenement »][0];
?>
</br>
<label for="activite_evenement"> Paramètre activite : </label>
<input size="10" type="text" value=" » name= »activite_evenement »/>
</br>
ID);
$archive_evenement = $custom_archive[« archive_evenement »][0];
?>
</br>
<label for="archive_evenement"> Paramètre archive : </label>
<input size="10" type="text" value=" » name= »archive_evenement »/>
</br>
ID, « nom_evenement », esc_html($_POST[« nom_evenement »]));
}
if(isset($_POST[‘preview_evenement’])){
update_post_meta($post->ID, « preview_evenement », esc_html($_POST[« preview_evenement »]));
}
if(isset($_POST[‘date_evenement’])){
update_post_meta($post->ID, « date_evenement », $_POST[« date_evenement »]);
}
/* if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « event_id1 », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « $information_evenement », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « _event_id1 », $_POST[« event_id1 »]);
} */
/* if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_id, « _event_id1 », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta($post_id, « $information_evenement », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_id, « event_id1 », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( ID, « event_id1 », $_POST[« event_id1 »]);
}
*/
if(isset($_POST[‘accueil_evenement’])){
update_post_meta($post->ID, « accueil_evenement », $_POST[« accueil_evenement »]);
}
if(isset($_POST[‘activite_evenement’])){
update_post_meta($post->ID, « activite_evenement », $_POST[« activite_evenement »]);
}
if(isset($_POST[‘archive_evenement’])){
update_post_meta($post->ID, « archive_evenement », $_POST[« archive_evenement »]);
}
if(isset($_POST[‘affichage_evenement’])){
update_post_meta($post->ID, « affichage_evenement », $_POST[« affichage_evenement »]);
}
if(isset($_POST[‘url_documentation_evenement’])){
// Sanitize user input.
$meta_data_docu = sanitize_text_field($_POST[‘url_documentation_evenement’]);
update_post_meta($post->ID, ‘url_docu’, $meta_data_docu );
}
if(isset($_POST[‘url_documentation_compterendu’])){
// Sanitize user input.
$meta_data_cr = sanitize_text_field($_POST[‘url_documentation_compterendu’]);
update_post_meta($post->ID, ‘url_compterendu’, $meta_data_cr );
}
if(isset($_POST[‘inscriptionenligne_evenement’])){
update_post_meta($post->ID, « inscriptionenligne_evenement », $_POST[« inscriptionenligne_evenement »]);
}
if(isset($_POST[‘complet_evenement’])){
update_post_meta($post->ID, « complet_evenement », $_POST[« complet_evenement »]);
}
if(isset($_POST[‘compterendu_evenement’])){
update_post_meta($post->ID, « compterendu_evenement », $_POST[« compterendu_evenement »]);
}
}
?>Pour le moment, j’ai donc testé plein de choses (merci Didier07 😉 ) et je teste encore…
Je regarde la partie update mais c’est peut être pas ça…merci si vous avez des remarques
Timama
27 février 2015 à 10 h 01 min #833408mince, il n’y a pas de numéro de ligne .. oups
bon, j’ai testé aussi le fait de mettre tout ce qu’il y a dans evenements.php directement dnas functions.php mais cela ne change rien….
J’ai modifié mon textearea en wp_editor. Le texte qui ne se modifie pas est celui que j’ai entré avec textearea.
Bon, si je crée un nouvel événement, il n’y a pas de texte par defaut dans le wp_editor et un nouveau texte ne se sauvegarde pas.je continue à chercher .. merci si vous avez des remarques
27 février 2015 à 10 h 06 min #833409wp_enqueue_script(
‘jquery-ui-datepicker’,
get_bloginfo(‘template_directory’) . ‘/jquery-ui-datepicker/jquery-ui-1.8.11.custom.min.js’,
array(‘jquery’)
);N’est pas utile car WP a déjà jquery-ui-datepicker comme script référencé par le core
Il faut lui envoyer au moins l’ID du post dans la fonction de sauvegarde.
function save_custom_evenement( $post_id )
27 février 2015 à 10 h 28 min #833410ah ? remarque très interessante pour datepicker…. je ne savais pas….. merci beaucoup ….
alors, j’ai essayé de passé le post dans la fonction de sauvegarde (j’ai essayé avec $post_id, $post, et $post_ID) mais cela ne change rien….
C’est quand même bizarre que tous les autres textes passant par cette fonction de sauvegarde sont sauvegardés et pas le texte du wp_editor…. c’est le seul qu pose pb….27 février 2015 à 12 h 22 min #833411Est-ce que c’est l’enregistrement qui ne se fait pas ou la récpéreation qui ne marche pas ?
Regarde dans la table post_meta si le contenu est enregistré ou pas pour commencer 🙂27 février 2015 à 14 h 30 min #833412bonne remarque. Alors le texte que je modifie se modifie également soit dans la meta_key event_id1 soit dans _event_id1 (ça dépend de quelle ligne de code je teste 😉 ).
Donc la modification se fait bien dans la db.
Elle est aussi dans la meta_key information_evenement et là, la modification ne se fait pas.Bon, ça c’est du à tous les teste que j’ai fait…. comme j’ai tenté
/*if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « event_id1 », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « $information_evenement », $_POST[« event_id1 »]);
}*/
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post->ID, « _event_id1 », $_POST[« event_id1 »]);
}
/* if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_id, « _event_id1 », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta($post_id, « $information_evenement », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( $post_id, « event_id1 », $_POST[« event_id1 »]);
}
if ( isset ( $_POST[‘event_id1’] ) ) {
update_post_meta( ID, « event_id1 », $_POST[« event_id1 »]);
}
*/C’est donc la récupération qui ne se fait pas….. si on prend la cas de event_id1 ….
Il y a un caffouillage entre les meta_key….et leur valeur .. et ce que je mets pour récupérer…J’étudie ça… merci beaucoup Didier07 !! merci pour cette piste !!
27 février 2015 à 14 h 33 min #833413voilà !! tu avais raison ! j’ai trouvé !!!
je met au clair dans 2 secondes…..
-
AuteurMessages
- Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.