Pregunta

Posible duplicado: ¿Cómo mostrar el meta casilla personalizado en la pantalla "Editar rápido"?

Estoy tratando de editar la pantalla de edición rápida en mi "visitante" personalizado para poder agregar algunas opciones para mis usuarios finales. Mi tipo de publicación personalizada no requiere/necesita una fecha de publicación, contraseña para ver, publicar el estado o los grandes cuadros de taxonomía para categorías personalizadas de visitantes.

Ya agregué un meta casilla personalizado para la página de edición real, pero Me gustaría habilitar el soporte de edición rápida de esos meta campos posteriores al tiempo que deshabilita las opciones de edición rápida actuales.

También encontré un correo (vinculado en mi posible duplicado) en los foros de WordPress.org, pero no estoy seguro exactamente qué hace.

¿Fue útil?

Solución

Utilizo esto para agregar campos de formulario a la edición rápida. No es del todo fácil hacer esto en WP (todavía) y puede ser muy difícil encontrar información sobre cómo hacerlo. Realmente tienes que cavar a través de la fuente para encontrarla también.

Agregar campos de formulario para editar rápido

<?php
add_action('quick_edit_custom_box', 'quickedit_posts_custom_box', 10, 2);
add_action('admin_head-edit.php', 'quick_add_script');

function quickedit_posts_custom_box( $col, $type ) {
    if( $col != 'COLUMN_NAME' || $type != 'post' ) {
        return;
    } ?>
    <fieldset class="inline-edit-col-right"><div class="inline-edit-col">
        <div class="inline-edit-group">
            <label class="alignleft">
                <input type="checkbox" name="yourformfield" id="yourformfield_check">
                <span class="checkbox-title">This Post Has Cake</span>
            </label>
        </div>
    </fieldset>
    <?php
}

function quick_add_script() { ?>
    <script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery('a.editinline').live('click', function() {
            var id = inlineEditPost.getId(this);
            var val = parseInt(jQuery('#inline_' + id + '_yourformfield').text());
            jQuery('#yourformfield_check').attr('checked', !!val);
        });
    });
    </script>
    <?php
}

Otros consejos

Estoy haciendo un poco de mi propia bocina aquí, pero para facilitar la edición de meta campos personalizados en WordPress, escribí un complemento llamado Edición de volumen/rápido personalizado.

Este complemento no solo agrega el meta personalizado a las pantallas de edición a granel y rápida para la edición real, sino también como columnas para la lista de tipos de publicaciones.

Luego, en caso de que el tema o el complemento en uso no habían habilitado el meta personalizado a las columnas de tipo post, puede usar un filtro para agregar sus columnas.

En tu tema functions.php Archivo Agregar código similar al siguiente.

add_filter( 'manage_post_posts_columns', 'my_manage_post_posts_columns' );
function my_manage_post_posts_columns( $columns ) {
$columns['custom_stuff'] = esc_html__( 'Custom Stuff Here' );

return $columns;
}

Como ejemplo de trabajar con un tipo de publicación personalizado nombrado news-room, intente lo siguiente.

add_filter( 'manage_news-room_posts_columns', 'my_manage_newsroom_posts_columns' );
function my_manage_newsroom_posts_columns( $columns ) {
$columns['wpcf-publication-author'] = esc_html__( 'Publication Author');
$columns['wpcf-newsroom-type']      = esc_html__( 'News Room Type');
$columns['_views_template']         = esc_html__( 'Content Template');

return $columns;
}

Esto se basa en el filtro administrar _ $ {post_type} _posts_columns para el post tipo de mensaje.

Tenga en cuenta que para ayudar a un mayor desarrollo y soporte, el complemento gratuito se limita a los tipos de publicaciones integradas de WordPress. Si está trabajando con un tipo de publicación personalizado, puede comprar una prima de edición de volumen/rápido personalizado.

Alternativamente, puede extraer código fuera del complemento a través de https://github.com/michael-cannon/custom-bulkquick-edit.

Agregue este código en su functions.php expediente. Este código se utiliza para el horario de publicación personalizado. Cambie el tipo de publicación de acuerdo con su necesidad.

// Add to our admin_init function

add_filter('manage_schedule_posts_columns', 'myown_add_post_columns');

function myown_add_post_columns($columns) {
    $columns['stime'] = 'Start Time';
   $columns['etime'] = 'End Time';
    return $columns;
}

// Add to our admin_init function

add_action('manage_schedule_posts_custom_column', 'myown_render_post_columns', 10, 2);

function myown_render_post_columns($column_name, $id) {
    switch ($column_name) {
    case 'stime':
        // show my_field
        echo get_post_meta( $id, 'stime', TRUE);

case 'etime':
        // show my_field
        $my_fieldvalue1 = get_post_meta( $id, 'etime', TRUE);
        echo $my_fieldvalue1;
    }
}

// Add to our admin_init function

add_action('quick_edit_custom_box',  'myown_add_quick_edit', 10, 2);

function myown_add_quick_edit($column_name, $post_type) {
    if ($column_name != 'stime') return;
    ?>
    <fieldset class="inline-edit-col-left">
        <div class="inline-edit-col">
            <span class="title">start time</span>
            <input id="myfield_noncename" type="hidden" name="myfield_noncename" value="" />
            <input id="myfield" type="text" name="stime" value=""/></br>
         <span class="title">End time</span>
       <input id="myfield1" type="text" name="etime" value=""/></br>
        <div id="main">
         <span class="title">Add New Session date</span></br>
       <a href="#" class="aclick">Add new</a></br></div>
        </div>
    </fieldset>
     <?php
}

// Add to our admin_init function 

add_action('save_post', 'myown_save_quick_edit_data');   

function myown_save_quick_edit_data($post_id) {     
  // verify if this is an auto save routine.         
  if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )          
      return $post_id;         
  // Check permissions     
  if ( 'stime' == $_POST['post_type'] ) {         
    if ( !current_user_can( 'edit_page', $post_id ) )             
      return $post_id;     
  } 
if ( 'etime' == $_POST['post_type'] ) {         
    if ( !current_user_can( 'edit_page', $post_id ) )             
      return $post_id;     
  } 
else {         
    if ( !current_user_can( 'edit_post', $post_id ) )         
    return $post_id;     
  }        
if(isset($_POST['tag-name']))
{
 if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
  $post = get_post($post_id);
  if ( $post->post_type == 'schedule') { // change 'post' to any cpt you want to target
    $term = get_term_by('slug', $post->post_name, 'schedule_category');
    if ( empty($term) ) {
      $add = wp_insert_term( $_POST['tag-name'], 'schedule_category', array('slug'=> $_POST['tag-name']) );
      if ( is_array($add) && isset($add['term_id']) ) {
        wp_set_object_terms($post_id, $add['term_id'], 'schedule_category', true );
      }
    }
  }
}

 // Authentication passed now we save the data   

  if (isset($_POST['stime']) && ($post->post_type != 'revision')) {
        $my_fieldvalue = esc_attr($_POST['stime']);
        if ($my_fieldvalue)
            update_post_meta( $post_id, 'stime', $my_fieldvalue);
        else
            delete_post_meta( $post_id, 'stime');
    }
    return $my_fieldvalue;
 if (isset($_POST['etime']) && ($post->post_type != 'revision')) {
        $my_fieldvalue1 = esc_attr($_POST['etime']);
        if ($my_fieldvalue1)
            update_post_meta( $post_id, 'etime', $my_fieldvalue1);
        else
            delete_post_meta( $post_id, 'etime');
    }
    return $my_fieldvalue1;
}

// Add to our admin_init function

add_action('admin_footer', 'myown_quick_edit_javascript');

function myown_quick_edit_javascript() {
    global $current_screen;
    if (($current_screen->post_type != 'schedule')) return;

    ?>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(".aclick").one("click", function(){  
   jQuery("#main").append('<input type="text" name="tag-name" />');
});
});
function set_myfield_value(fieldValue,fieldValue1, nonce) {
        // refresh the quick menu properly
        inlineEditPost.revert();
        console.log(fieldValue);
        console.log(fieldValue1);
        jQuery('#myfield').val(fieldValue);
         jQuery('#myfield1').val(fieldValue1);
}
</script>
 <?php 
}

// Add to our admin_init function 

add_filter('post_row_actions', 'myown_expand_quick_edit_link', 10, 2);   
function myown_expand_quick_edit_link($actions, $post) {     
    global $current_screen;     
    if (($current_screen->post_type != 'schedule')) 
        return $actions;
    $nonce = wp_create_nonce( 'myfield_'.$post->ID);
    $myfielvalue = get_post_meta( $post->ID, 'stime', TRUE);
    $myfielvalue1 = get_post_meta( $post->ID, 'etime', TRUE);
    $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="';     
    $actions['inline hide-if-no-js'] .= esc_attr( __( 'Edit this item inline' ) ) . '"';
    $actions['inline hide-if-no-js'] .= " onclick=\"set_myfield_value('{$myfielvalue}','{$myfielvalue1}')\" >";
    $actions['inline hide-if-no-js'] .= __( 'Quick Edit' );
    $actions['inline hide-if-no-js'] .= '</a>';
    return $actions;
}
Licenciado bajo: CC-BY-SA con atribución
scroll top