Mettre à jour un post existant avec les valeurs fournies dans $_POST.

Description

Si les données de post sont passées comme argument, elles sont traitées comme un tableau de données clés de manière appropriée pour être transformées en un objet post.

Si les données post ne sont pas passées, la variable globale $_POST est utilisée à la place.

Paramètres

$post_data

(tableau)(Facultatif) Par défaut, il s'agit du global $_POST.

Valeur par défaut : null

Retourner

(int) Post ID.

Source

Fichier : wp-admin/includes/post.php

functionedit_post($post_data=null){global$wpdb;if(empty($post_data)){$post_data=&$_POST;}// Clear out any data in internal vars.unset($post_data['filter']);$post_ID=(int)$post_data['post_ID'];$post=get_post($post_ID);$post_data['post_type']=$post->post_type;$post_data['post_mime_type']=$post->post_mime_type;if(!empty($post_data['post_status'])){$post_data['post_status']=sanitize_key($post_data['post_status']);if('inherit'===$post_data['post_status']){unset($post_data['post_status']);}}$ptype=get_post_type_object($post_data['post_type']);if(!current_user_can('edit_post',$post_ID)){if('page'===$post_data['post_type']){wp_die(__('Sorry, you are not allowed to edit this page.'));}else{wp_die(__('Sorry, you are not allowed to edit this post.'));}}if(post_type_supports($ptype->name,'revisions')){$revisions=wp_get_post_revisions($post_ID,array('order'=>'ASC','posts_per_page'=>1,));$revision=current($revisions);// Check if the revisions have been upgraded.if($revisions&&_wp_get_post_revision_version($revision)<1){_wp_upgrade_revisions_of_post($post,wp_get_post_revisions($post_ID));}}if(isset($post_data['visibility'])){switch($post_data['visibility']){case'public':$post_data['post_password']='';break;case'password':unset($post_data['sticky']);break;case'private':$post_data['post_status']='private';$post_data['post_password']='';unset($post_data['sticky']);break;}}$post_data=_wp_translate_postdata(true,$post_data);if(is_wp_error($post_data)){wp_die($post_data->get_error_message());}$translated=_wp_get_allowed_postdata($post_data);// Post formats.if(isset($post_data['post_format'])){set_post_format($post_ID,$post_data['post_format']);}$format_meta_urls=array('url','link_url','quote_source_url');foreach($format_meta_urlsas$format_meta_url){$keyed='_format_'$format_meta_url;if(isset($post_data[$keyed])){update_post_meta($post_ID,$keyed,wp_slash(esc_url_raw(wp_unslash($post_data[$keyed]))));}}$format_keys=array('quote','quote_source_name','image','gallery','audio_embed','video_embed');foreach($format_keysas$key){$keyed='_format_'$key;if(isset($post_data[$keyed])){if(current_user_can('unfiltered_html')){update_post_meta($post_ID,$keyed,$post_data[$keyed]);}else{update_post_meta($post_ID,$keyed,wp_filter_post_kses($post_data[$keyed]));}}}if('attachment'===$post_data['post_type']&&preg_match('#^(audio|video)/#',$post_data['post_mime_type'])){$id3data=wp_get_attachment_metadata($post_ID);if(!is_array($id3data)){$id3data=array();}foreach(wp_get_attachment_id3_keys($post,'edit')as$key=>$label){if(isset($post_data['id3_'$key])){$id3data[$key]=sanitize_text_field(wp_unslash($post_data['id3_'$key]));}}wp_update_attachment_metadata($post_ID,$id3data);}// Meta stuff.if(isset($post_data['meta'])&&$post_data['meta']){foreach($post_data['meta']as$key=>$value){$meta=get_post_meta_by_id($key);if(!$meta){continue;}if($meta->post_id!=$post_ID){continue;}if(is_protected_meta($meta->meta_key,'post')||!current_user_can('edit_post_meta',$post_ID,$meta->meta_key)){continue;}if(is_protected_meta($value['key'],'post')||!current_user_can('edit_post_meta',$post_ID,$value['key'])){continue;}update_meta($key,$value['key'],$value['value']);}}if(isset($post_data['deletemeta'])&&$post_data['deletemeta']){foreach($post_data['deletemeta']as$key=>$value){$meta=get_post_meta_by_id($key);if(!$meta){continue;}if($meta->post_id!=$post_ID){continue;}if(is_protected_meta($meta->meta_key,'post')||!current_user_can('delete_post_meta',$post_ID,$meta->meta_key)){continue;}delete_meta($key);}}// Attachment stuff.if('attachment'===$post_data['post_type']){if(isset($post_data['_wp_attachment_image_alt'])){$image_alt=wp_unslash($post_data['_wp_attachment_image_alt']);if(get_post_meta($post_ID,'_wp_attachment_image_alt',true)!==$image_alt){$image_alt=wp_strip_all_tags($image_alt,true);// update_post_meta() expects slashed.update_post_meta($post_ID,'_wp_attachment_image_alt',wp_slash($image_alt));}}$attachment_data=isset($post_data['attachments'][$post_ID])?$post_data['attachments'][$post_ID]:array();/** This filter is documented in wp-admin/includes/media.php */$translated=apply_filters('attachment_fields_to_save',$translated,$attachment_data);}// Convert taxonomy input to term IDs, to avoid ambiguity.if(isset($post_data['tax_input'])){foreach((array)$post_data['tax_input']as$taxonomy=>$terms){$tax_object=get_taxonomy($taxonomy);if($tax_object&&isset($tax_object->meta_box_sanitize_cb)){$translated['tax_input'][$taxonomy]=call_user_func_array($tax_object->meta_box_sanitize_cb,array($taxonomy,$terms));}}}add_meta($post_ID);update_post_meta($post_ID,'_edit_last',get_current_user_id());$success=wp_update_post($translated);// If the save failed, see if we can sanity check the main fields and try again.if(!$success&&is_callable(array($wpdb,'strip_invalid_text_for_column'))){$fields=array('post_title','post_content','post_excerpt');foreach($fieldsas$field){if(isset($translated[$field])){$translated[$field]=$wpdb->strip_invalid_text_for_column($wpdb->posts,$field,$translated[$field]);}}wp_update_post($translated);}// Now that we have an ID we can fix any attachment anchor hrefs._fix_attachment_links($post_ID);wp_set_post_lock($post_ID);if(current_user_can($ptype->cap->edit_others_posts)&&current_user_can($ptype->cap->publish_posts)){if(!empty($post_data['sticky'])){stick_post($post_ID);}else{unstick_post($post_ID);}}return$post_ID;}

Related

Utilise

Utilisations Description
wp-admin/includes/post.php : _wp_get_allowed_postdata()

Retourne uniquement les champs de données post autorisés.

wp-includes/wp-db.php : wpdb::strip_invalid_text_for_column()

Dépouille les caractères invalides de la chaîne de caractères pour une table et une colonne données.

wp-admin/includes/media.php : champs_attachés_à_enregistrer

Filtre les champs de pièces jointes à sauvegarder.

wp-admin/includes/post.php : wp_set_post_lock()

Marquer le post comme étant actuellement en cours d'édition par l'utilisateur actuel.

wp-admin/includes/post.php : get_post_meta_by_id()

Récupère les métadonnées du post par l'identifiant méta.

wp-admin/includes/post.php : update_meta()

Mise à jour des méta-données du post par l'ID méta.

wp-admin/includes/post.php : delete_meta()

Supprime les métadonnées du post par l'identifiant méta.

wp-admin/includes/post.php : add_meta()

Ajoute les métadonnées du post définies dans la superglobale $_POST pour le post avec l'ID donné.

wp-admin/includes/post.php : _fix_attachment_links()

Remplacer les hrefs des ancres de pièces jointes par des permaliens à jour.

wp-admin/includes/post.php : _wp_translate_postdata()

Renommer les données $_POST des noms de formulaire aux colonnes post de la DB.

wp-includes/capabilities.php : current_user_can()

Renvoie si l'utilisateur actuel a la capacité spécifiée.

wp-includes/l10n.php : __()

Récupère la traduction de $text.

wp-includes/formatting.php : wp_slash()

Ajoute des barres obliques à une chaîne de caractères ou ajoute récursivement des barres obliques aux chaînes de caractères dans un tableau.

wp-includes/formatting.php : wp_unslash()

Supprime les barres obliques d'une chaîne de caractères ou supprime récursivement les barres obliques des chaînes de caractères dans un tableau.

wp-includes/formatting.php : sanitize_text_field()

Sanitise une chaîne de caractères à partir de la saisie de l'utilisateur ou de la base de données.

wp-includes/formatting.php : wp_strip_all_tags()

Dépouille correctement toutes les balises HTML, y compris le script et le style.

wp-includes/formatting.php : esc_url_raw()

Exécute esc_url() pour l'utilisation de la base de données.

wp-includes/formatting.php : sanitize_key()

Assainit une clé de type chaîne de caractères.

wp-includes/kses.php : wp_filter_post_kses()

Sanitizes le contenu pour les balises HTML autorisées pour le contenu du post.

wp-includes/functions.php : wp_die()

Tue l'exécution de WordPress et affiche une page HTML avec un message d'erreur.

wp-includes/taxonomy.php : get_taxonomy()

Récupère l'objet taxonomie de $taxonomy.

wp-includes/plugin.php : apply_filters()

Appelle les fonctions de rappel qui ont été ajoutées à un crochet de filtre.

wp-includes/user.php : get_current_user_id()

Récupère l'identifiant de l'utilisateur actuel.

wp-includes/media.php : wp_get_attachment_id3_keys()

Renvoie des clés utiles à utiliser pour consulter les données des métadonnées stockées d'une pièce jointe.

wp-includes/post.php : wp_get_attachment_metadata()

Récupère les métadonnées de la pièce jointe pour l'identifiant de la pièce jointe.

wp-includes/post.php : wp_update_attachment_metadata()

Met à jour les métadonnées d'une pièce jointe.

wp-includes/post.php : wp_update_post()

Mise à jour d'un post avec les nouvelles données du post.

wp-includes/post.php : stick_post()

Rendre un post collant.

wp-includes/post.php : unstick_post()

Décroche un post.

wp-includes/post.php : post_type_supports()

Vérifie le support d'un type de post pour une fonctionnalité donnée.

wp-includes/post.php : update_post_meta()

Met à jour un champ méta de post en fonction de l'ID de post donné.

wp-includes/post.php : get_post_meta()

Récupère un champ méta de post pour l'ID de post donné.

wp-includes/post.php : get_post()

Récupère les données du post étant donné un ID de post ou un objet post.

wp-includes/post.php : get_post_type_object()

Récupère un objet de type de post par son nom.

wp-includes/revision.php : wp_get_post_revisions()

Renvoie toutes les révisions du post spécifié.

wp-includes/revision.php : _wp_get_post_revision_version()

Récupère la version de révision du post.

wp-includes/revision.php : _wp_upgrade_revisions_of_post()

Mettre à niveau l'auteur des révisions, ajouter le post actuel comme une révision et définir la version des révisions à 1.

wp-includes/post-formats.php : set_post_format()

Affecter un format à un post

wp-includes/meta.php : is_protected_meta()

Détermine si une clé méta est considérée comme protégée.

wp-includes/load.php : is_wp_error()

Vérifie si la variable donnée est une erreur WordPress.

Utilisé par

Utilisé par Description
wp-admin/includes/post.php : post_preview()

Sauvegarde un brouillon ou autosauvegarde manuelle dans le but d'afficher un aperçu du post.

wp-admin/includes/post.php : wp_autosave()

Sauvegarde d'un post soumis avec XHR

wp-admin/includes/post.php : wp_write_post()

Crée un nouveau post à partir du formulaire "Write Post" en utilisant les informations $_POST.

wp-admin/includes/ajax-actions.php : wp_ajax_wp_fullscreen_save_post()

Gestionnaire Ajax pour l'enregistrement des posts depuis l'éditeur plein écran.

wp-admin/includes/ajax-actions.php : wp_ajax_add_meta()

Gestionnaire Ajax pour l'ajout de méta.

wp-admin/includes/ajax-actions.php : wp_ajax_inline_save()

Gestionnaire Ajax pour l'édition rapide enregistrant un article à partir d'un tableau de liste.

Changelog

Version Description
1.5.0 Introduit.