JQuery UI可排序不能与Metabox一起使用

时间:2015-06-04 作者:Lyphiix

我在这方面遇到了很多麻烦-我的ul-li不会去任何地方。我已经看过了这本书的大部分“副本”,但我一辈子都无法让它发挥作用。而且我的代码可能不是最好的,所以请随意评论/回答(只要答案也是实际的答案)更好的做事方式。

脚本注册:

function add_admin_scripts( $hook ) {
  global $post;

  wp_register_script( \'sectioned_page_script\', get_stylesheet_directory_uri() . \'/js/sectioned_page.js\' );

  if ( $hook == \'post-new.php\' || $hook == \'post.php\' ) {
    if ( \'sectioned_page\' === $post->post_type ) {
      wp_enqueue_script( \'jquery\' );
      //wp_enqueue_script( \'jquery-ui-sortable\' );
      wp_enqueue_script( \'sectioned_page_script\' );
    }
  }
}
add_action( \'admin_enqueue_scripts\', \'add_admin_scripts\', 10, 1 );
Meta box大楼:

function sectioned_page_meta_box_cb( $post ) {
  wp_nonce_field( basename( __FILE__ ),  $nonce );
  ?>
    <p>
      <label><?php _e(\'Sections:\'); ?></label>
      <ul class="sortable">
        <li>2345678901</li>
        <li>1234567890</li>
        <li>3456789012</li>
      </ul>
    </p>
  <?php
}
和实际脚本:

jQuery( document ).ready( function( $ ) {    
    $( \'.sortable\' ).sortable({
        opacity: 0.6,
        revert: true,
        cursor: \'move\',
        handle: \'.hndle\',
        placeholder: {
            element: function( currentItem ) {
                return $("<li style=\'background:#E7E8AD\'>&nbsp;</li>")[0];
            },
            update: function( container, p ) {
                return;
            }
        }
    });
    $( \'.sortable\' ).disableSelection();
    alert( "Finished!" );
});

function addSection() {
    // TODO - add to list
    alert( "Hello!" );
}
谢谢你的帮助Lyphiix

1 个回复
最合适的回答,由SO网友:Lyphiix 整理而成

因此,在经历了令人烦恼的长期斗争之后,我发现我需要让脚本排队/注册,而不需要依赖项。所以最后,为了让它发挥作用,我需要:

function add_admin_scripts( $hook ) {
  global $post;

  wp_register_script( \'sectioned_page_script\', get_stylesheet_directory_uri() . \'/js/sectioned_page.js\' );

  if ( $hook == \'post-new.php\' || $hook == \'post.php\' ) {
    if ( \'sectioned_page\' === $post->post_type ) {
      wp_enqueue_script( \'sectioned_page_script\' );
    }
  }
}
add_action( \'admin_enqueue_scripts\', \'add_admin_scripts\', 10, 1 );

结束

相关推荐

使用新值保存metabox_wp_page_模板

我创建了一个元框来显示页面模板,并使用单选按钮选择另一个模板。这是当前page attributes 代谢箱。我在保存部分遗漏了一些东西。这个_wp_page_template 无法更新。以下是我目前拥有的:<?php // Add the Meta Box function add_meta_box_template_picker() { add_meta_box( \'meta_box_template_picker\', // $id