Pregunta

Es posible establecer un sistema automático de valor para un campo personalizado al enviar el post en wordpress?

Cuando he puesto yo necesito que este campo personalizado tomar automáticamente la primera letra del título del post.

Ejemplo:Si mi título es "Ejemplo" El valor de campo personalizado es una "E".

¿Fue útil?

Solución

Sí, es posible.Si va a añadir un campo personalizado por una meta cuadro que usted podría hacer así:

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

Por supuesto, usted tendrá que cambiar sample en este caso, el nombre de su meta de datos de campo.

Si ya ha creado un campo personalizado a través de la interfaz de administración, se podría hacer así:

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

Como en el primer ejemplo, usted tendrá que cambiar el sample para el nombre del campo personalizado.

Licenciado bajo: CC-BY-SA con atribución
scroll top