Question

Est-il possible de définir une valeur automatique sur un champ personnalisé lors de la soumission de la publication dans WordPress ?

Lorsque je poste, j'ai besoin que ce champ personnalisé prenne automatiquement la première lettre du titre du message.

Exemple:Si mon titre est « Exemple », la valeur du champ personnalisé est « E ».

Était-ce utile?

La solution

Oui, c'est possible.Si vous ajoutez un champ personnalisé via une méta-boîte, vous pouvez procéder comme ceci :

// add action to create your custom field
add_action( 'add_meta_boxes', 'create_meta_box'  );
// add a callback that will be called when saving the post
add_filter( 'save_post', 'save_meta_box', 10, 2 );

// function that will create a meta box
function create_meta_box() {
   add_meta_box('sample_meta_box', __('Sample Box'), 'display_meta_box');     
}

// function that will display the actual meta box
function display_meta_box($post, $metabox) {
  ?>
   <input name="sample" type="text" id="sample" value="<?php echo get_post_meta($post->ID, 'sample', true); ?>">
  <?php
}

// function that will be called when the post is saved
function save_meta_box($post_id, $post) {
   // default value for the field
   $value = $_POST['post_title'][0];
   // only use the default value if user haven't specified one
   if(!empty($_POST['sample'])) {
      $value = $_POST['sample'];
   }
   // update the meta data for the post
   update_post_meta($post_id, 'sample', $value);
}

Bien sur il faudra changer sample dans ce cas, au nom de votre champ de métadonnées.

Si vous avez déjà créé un champ personnalisé via l'interface d'administration, vous pouvez procéder comme ceci :

// add a callback that will be called when saving the post
add_filter( 'save_post', 'save_custom_field', 10, 2 ); 

// called when updating a post
function save_custom_field($post_id, $post) {
   // loop through the meta data
   if(isset($_POST['meta'])) {
     foreach($_POST['meta'] as $key => $value) {
        // check if it's the correct field
        if($value['key'] == 'sample') {
           // this will always set the custom field to the first letter in the title
           update_post_meta($post_id, 'sample', $_POST['post_title'][0]);
           break;
        }
     }
   }
}

Comme dans le premier exemple, vous devrez changer le sample au nom de votre champ personnalisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top