Unbind postbox click handler

时间:2012-01-22 作者:studioromeo

我正在尝试解除post元数据库上的click处理程序的绑定,以便它们在单击句柄时不再隐藏。我需要这样做,因为我使用句柄来包含<select> 元素(&A);更改这些时click 事件已激发。

绑定click处理程序的代码如下:https://github.com/WordPress/WordPress/blob/master/wp-admin/js/postbox.dev.js#L8

不幸的是,解除绑定的唯一方法似乎是编辑此文件&;在内部插入解除绑定add_postbox_toggles

希望有人能帮忙

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

您只需将必要的javascript放入一个文件中,并将其排入必要的页面即可:

add_action( \'admin_enqueue_scripts\', \'add_admin_scripts\', 10, 1 );
function add_admin_scripts( $hook ) {    
//You can globalise $post here and enqueue the script for only certain post-types.
    if ( $hook == \'post-new.php\' || $hook == \'post.php\') {
        wp_register_script( \'my_js_handle\',\'/path/to/js/my-js-file.js\',array(\'jquery\'),1,true);
        wp_enqueue_script(\'my_js_handle\');
   }
}
javascript文件包含:

    jQuery(document).ready(function() {
       jQuery(\'.postbox h3, .postbox .handlediv\').unbind(\'click.postboxes\');
    });
(事实上,您可能只需在管理页脚中“打印”它)。

SO网友:Nabil Kadimi

我将分享我的代码,我希望有人审查它,因为我不是事件处理专家。

这将进入插件或主题函数中。php:

/**
 * Disable meta box toggling (collapse/expand) for specified post types
 */
add_action( \'admin_footer\', \'wpse_39723_disable_metabox_toggle\' );
function wpse_39723_disable_metabox_toggle() {    

    $current_screen = get_current_screen();

    // Array of post types where we want to remove metabox toggling
    $post_types = array(
        \'post\',
        // \'page\',
        // \'my_custom_post_type\',
    );

    if( in_array( $current_screen->id, $post_types ) ) {
        ?>
        <script type="text/javascript">
            jQuery( document ).ready( function($) {
                $( \'.postbox\' ).removeClass( \'closed\' );
                $( \'.postbox .hndle\' ).css( \'cursor\', \'default\' );
                $( document ).delegate( \'.postbox h3, .postbox .handlediv\', \'click\', function() {
                    $( this )
                        .unbind( \'click.postboxes\' )
                        .parent().removeClass( \'closed\' );
                } );
            } );
        </script>
        <?php       
    }
}

结束

相关推荐

可以使用metabox创建一篇帖子吗?

我正在尝试使用“save\\u post”挂钩从元数据库创建一篇帖子(最终是多篇帖子)。我执行了一次脚本,创建了3900个左右的新帖子,然后才爬到帖子中。发现wp\\u insert\\u post()调用“save\\u post”挂钩。有没有人有一个创造性的解决方案,可以在不直接插入db的情况下创建帖子(解决方案越简单越好)。代码add_action( \'add_meta_boxes\', \'my_metabox_init\' ); add_action( \'save_post\', \