Cómo colocar un campo personalizado antes del editor

2

He instalado Advanced Custom Fields 4.0.1 y he creado un nuevo Field group que contiene un solo campo llamado preamble . Me gustaría ubicar este nuevo campo antes del editor en la pantalla de edición de publicaciones. Parece que todos los campos personalizados siempre se agregan después de los campos ordinarios de una publicación.

Una solución no sería eliminar los campos personalizados creados con ACF y usar campos personalizados normales.

    
pregunta Cyclonecode 04.04.2013 - 10:48

2 respuestas

4

Esto se puede resolver utilizando este fragmento de código agradable y edit_form_after_title hook. Pero no he probado lo que sucede cuando existe más de una meta box. Con un solo campo ACF ( position:normal, style:no-metabox ) funciona:

add_action( 'edit_form_after_title', 'pre_title_metabox_wpse_94530' );

function pre_title_metabox_wpse_94530() 
{
    global $post, $wp_meta_boxes;

    do_meta_boxes( get_current_screen(), 'normal', $post );

    unset( $wp_meta_boxes['post']['normal'] );
}

Y si tiene que resolverse con jQuery, ajuste subtitle_text a su nombre de campo:

// Add hook to Edit and New post
foreach( array( 'post.php', 'post-new.php' ) as $hook )
    add_action( "admin_footer-$hook", 'move_acf_to_title_wpse_94530' );

function move_acf_to_title_wpse_94530()
{
    // Check post type
    if( 'post' != get_post_type() )
        return;

    ?>
    <script type="text/javascript">
        jQuery(document).ready( function($) 
        {
            $( '#acf-field-subtitle_text' ).css( 'width', '100%' );
            $( '#acf-subtitle_text' ). insertAfter( '#titlewrap' );
        });
    </script>
    <?php
}
    
respondido por el brasofilo 05.04.2013 - 03:00
2

He comprobado esto un poco. Miré la fuente de ACF. Los campos sin formato que utiliza ACF todavía son en realidad metacuadros. ACF solo está usando CSS para que se vean como campos más genéricos. Todavía están siendo manejados como meta cajas por WP (acción do_metaboxes ).

Para agregar campos sin formato a otras partes del formulario de edición, deberá usar los ganchos apropiados. Más ganchos en la pantalla de edición :

add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title() {
    echo '<h2>This is edit_form_after_title!</h2>';
}

add_action( 'edit_form_after_editor', 'myprefix_edit_form_after_editor' );
function myprefix_edit_form_after_editor() {
    echo '<h2>This is edit_form_after_editor!</h2>';
}

add_action( 'edit_form_advanced', 'myprefix_edit_form_advanced' );
function myprefix_edit_form_advanced() {
    echo '<h2>This is ye olde edit_form_advanced!</h2>';
}
    
respondido por el Dave Romsey 04.04.2013 - 20:27

Lea otras preguntas en las etiquetas