Frage

Ist es möglich, beim Senden des Beitrags in WordPress einen automatischen Wert für ein benutzerdefiniertes Feld festzulegen?

Wenn ich poste, muss dieses benutzerdefinierte Feld automatisch den ersten Buchstaben des Beitragstitels übernehmen.

Beispiel:Wenn mein Titel "Beispiel" lautet, lautet der benutzerdefinierte Feldwert "E".

War es hilfreich?

Lösung

Ja, das ist möglich.Wenn Sie ein benutzerdefiniertes Feld über ein Metafeld hinzufügen, können Sie Folgendes tun:

// 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);
}

Natürlich musst du dich umziehen sample in diesem Fall auf den Namen Ihres Metadatenfelds.

Wenn Sie bereits ein benutzerdefiniertes Feld über die Administrationsoberfläche erstellt haben, können Sie Folgendes tun:

// 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;
        }
     }
   }
}

Wie im ersten Beispiel müssen Sie die ändern sample auf den Namen Ihres benutzerdefinierten Felds.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top