我正在使用以下命令在编辑帖子屏幕中显示divadd_meta_box()
. 此功能通过“优先级”和“上下文”参数提供非常有限的定位选项,这些参数不足以满足我的需要。
我需要能够在Permalink下方,但在Edit Post上的Insert Media按钮上方显示div,特别是在div“titlediv”下方、div“postdivrich”上方。
如何在后期编辑屏幕上定位元框?这可以通过jQuery实现吗?
以下是一个部分有效的解决方案:
function admin_init(){
add_meta_box("wd_meta", "WD Meta", "wd_meta", "post", "normal", "high");
}
add_action("admin_init", "admin_init");
function wd_meta() {
global $post;
$custom = get_post_custom($post->ID);
?>
<div id="wdMeta">
<p>Display a message here.</p>
</div>
<script>
$(\'#wd_meta\').insertAfter(\'#titlediv\');
</script>
<?php } ?>
meta框正确显示在页面上,但javascript没有正确定位它,即使它似乎在演示中工作:
http://jsfiddle.net/kFTc5/11/
最合适的回答,由SO网友:fuxia 整理而成
您不能使用真正的metabox来实现这一点edit_form_after_title
相反
下面是一个简单的示例:
add_action( \'edit_form_after_title\', \'wpse_87478_pseudo_metabox\' );
add_action( \'save_post\', \'wpse_87478_save_metabox\' );
function wpse_87478_pseudo_metabox()
{
global $post;
$key = \'_wpse_87478\';
if ( empty ( $post ) || \'post\' !== get_post_type( $GLOBALS[\'post\'] ) )
return;
if ( ! $content = get_post_meta( $post->ID, $key, TRUE ) )
$content = \'\';
printf(
\'<p><label for="%1$s_id">Enter some text
<input type="text" name="%1$s" id="%1$s_id" value="%2$s" class="all-options" />
</label></p>\',
$key,
esc_attr( $content )
);
}
function wpse_87478_save_metabox( $post_id )
{
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return;
if ( ! current_user_can( \'edit_post\', $post_id ) )
return;
$key = \'_wpse_87478\';
if ( isset ( $_POST[ $key ] ) )
return update_post_meta( $post_id, $key, $_POST[ $key ] );
delete_post_meta( $post_id, $key );
}