Personalización de la pantalla de edición rápida
Posible duplicado: ¿Cómo mostrar un metabox personalizado en la pantalla de "Edición rápida"?
Estoy intentando editar la pantalla de edición rápida en mi tipo de entrada personalizado "visitante" para añadir algunas opciones para mis usuarios finales. Mi tipo de entrada personalizado no necesita/requiere fecha de publicación, contraseña para ver, estado de publicación, ni grandes cajas de taxonomía para categorías personalizadas de visitantes.
Ya he añadido un metabox personalizado para la página de edición normal, pero me gustaría habilitar soporte de edición rápida para esos campos meta de entrada mientras desactivo las opciones actuales de edición rápida.
También encontré una publicación (enlazada en mi posible duplicado) en los foros de wordpress.org, pero no estoy seguro exactamente de qué hace.
Utilizo esto para agregar campos de formulario a la edición rápida. No es del todo fácil hacer esto en WordPress (aún) y puede ser muy difícil encontrar información sobre cómo hacerlo. Realmente tienes que profundizar en el código fuente para encontrarlo también.
Agregar campos de formulario a la Edición Rápida
<?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">Este Post Tiene Pastel</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
}

He leído esto, pero no entiendo; cómo es posible configurar el checkbox, si los metadatos del post están en la base de datos; get_meta_data() solo se puede usar en php; tal vez tengas una pista o solución para mí. Actualmente tu ejemplo es bueno, pero no entiendo el ID #inline_' + id + '_yourformfield; ¿dónde está esto?; y ¿este ID es global de WP?. He añadido muchos checkboxes y también funciona bien para guardar los datos, pero no encuentro una solución para ver el checkbox marcado. ¡Muchas gracias!

Voy a darme un poco de autobombo aquí, pero para facilitar la edición de campos meta personalizados en WordPress, escribí un plugin llamado Custom Bulk/Quick Edit.
Este plugin no solo añade los meta personalizados a las pantallas de Edición Rápida y Edición Masiva para su edición real, sino también como columnas en el listado del tipo de contenido.
De esta manera, en caso de que el tema o plugin en uso no haya habilitado ya los meta personalizados en las columnas del tipo de contenido, puedes usar un filtro para añadir tus columnas.
En el archivo functions.php
de tu tema añade 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__( 'Cosas Personalizadas Aquí' );
return $columns;
}
Como ejemplo para trabajar con un tipo de contenido personalizado llamado news-room
, prueba 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__( 'Autor de la Publicación');
$columns['wpcf-newsroom-type'] = esc_html__( 'Tipo de Sala de Prensa');
$columns['_views_template'] = esc_html__( 'Plantilla de Contenido');
return $columns;
}
Esto se basa en el filtro manage_${post_type}_posts_columns para el tipo de contenido post
.
Por favor ten en cuenta que para ayudar con el desarrollo futuro y el soporte, el plugin gratuito está limitado a los tipos de contenido incorporados en WordPress. Si estás trabajando con un tipo de contenido personalizado, puedes comprar Custom Bulk/Quick Edit Premium.
Alternativamente, puedes extraer código del plugin en https://github.com/michael-cannon/custom-bulkquick-edit.

Añade este código en tu archivo functions.php
. Este código se utiliza para un tipo de publicación personalizado de horarios. Cambia el tipo de publicación según tus necesidades.
// Añadir a nuestra función admin_init
add_filter('manage_schedule_posts_columns', 'myown_add_post_columns');
function myown_add_post_columns($columns) {
$columns['stime'] = 'Hora de inicio';
$columns['etime'] = 'Hora de fin';
return $columns;
}
// Añadir a nuestra función admin_init
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':
// mostrar mi campo
echo get_post_meta( $id, 'stime', TRUE);
case 'etime':
// mostrar mi campo
$my_fieldvalue1 = get_post_meta( $id, 'etime', TRUE);
echo $my_fieldvalue1;
}
}
// Añadir a nuestra función admin_init
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">Hora de inicio</span>
<input id="myfield_noncename" type="hidden" name="myfield_noncename" value="" />
<input id="myfield" type="text" name="stime" value=""/></br>
<span class="title">Hora de fin</span>
<input id="myfield1" type="text" name="etime" value=""/></br>
<div id="main">
<span class="title">Añadir nueva fecha de sesión</span></br>
<a href="#" class="aclick">Añadir nueva</a></br></div>
</div>
</fieldset>
<?php
}
// Añadir a nuestra función admin_init
add_action('save_post', 'myown_save_quick_edit_data');
function myown_save_quick_edit_data($post_id) {
// verificar si es una rutina de guardado automático
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
// Verificar permisos
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') { // cambiar 'post' por cualquier CPT que quieras dirigir
$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 );
}
}
}
}
// Autenticación pasada, ahora guardamos los datos
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;
}
// Añadir a nuestra función admin_init
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) {
// refrescar el menú rápido correctamente
inlineEditPost.revert();
console.log(fieldValue);
console.log(fieldValue1);
jQuery('#myfield').val(fieldValue);
jQuery('#myfield1').val(fieldValue1);
}
</script>
<?php
}
// Añadir a nuestra función admin_init
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( __( 'Editar este elemento en línea' ) ) . '"';
$actions['inline hide-if-no-js'] .= " onclick=\"set_myfield_value('{$myfielvalue}','{$myfielvalue1}')\" >";
$actions['inline hide-if-no-js'] .= __( 'Edición rápida' );
$actions['inline hide-if-no-js'] .= '</a>';
return $actions;
}

Además, por favor lee mis comentarios sobre tu pregunta acerca de editar tus publicaciones. Tu código es un desastre ilegible, y no es trabajo de otra persona limpiar después de ti, es tu responsabilidad editar correctamente tus publicaciones
