Advanced Custom Fields 4.0.1
をインストールし、preamble
という名前の単一フィールドを含む新しいField group
を作成しました。投稿編集画面で、編集者の前にこの新しいフィールドを配置したいと思います。通常のフィールドを投稿した後にすべてのカスタムフィールドが常に追加されるようです。
解決策は、ACF
で作成されたカスタムフィールドを削除して通常のカスタムフィールドを使用することではありません。
これは このNiceスニペット とedit_form_after_title
フックを使って解決できます。しかし、私は複数のメタボックスが存在するときに何が起こるかをテストしていません。単一のACFフィールド(position:normal, style:no-metabox
)でそれは機能します。
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'] );
}
そしてそれがjQueryで解決されなければならないならば、あなたのフィールド名にsubtitle_text
を調整してください:
// 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
}
私はこれを少し調べました。 ACFソースを見ました。 ACFが使用するプレーンフィールドは、まだ実際にはメタボックスです。 ACFは、CSSを使用して、より一般的なフィールドのように見せかけるようにしています。それらはまだWP(do_metaboxes
action)によってメタボックスとして扱われています。
プレーンフォームを編集フォームの他の部分に追加するには、適切なフックを使う必要があります。 編集画面にもっとフックがあります :
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>';
}