代码之家  ›  专栏  ›  技术社区  ›  Ignacio

如何将自定义javascript添加到WordPress管理?

  •  28
  • Ignacio  · 技术社区  · 14 年前

    我想在编辑文章页面中添加一些自定义jquery代码,这非常简单,比如当有人按下publish时显示一个div。

    唯一的限制是我想通过使用插件来实现这一点,而不是破解管理模板文件。

    我试过用一些动作来回送一些脚本标签,但似乎不是这样。

    4 回复  |  直到 6 年前
        1
  •  55
  •   Tim Andy    6 年前

    使用 admin_enqueue_scripts 行动与 wp_enqueue_script 方法将自定义脚本添加到管理界面。

    假设你有 myscript.js 在插件文件夹中。相应更改。这个 my_custom_script 对于模块和脚本,句柄应该是唯一的。

    function my_enqueue($hook) {
        // Only add to the edit.php admin page.
        // See WP docs.
        if ('edit.php' !== $hook) {
            return;
        }
        wp_enqueue_script('my_custom_script', plugin_dir_url(__FILE__) . '/myscript.js');
    }
    
    add_action('admin_enqueue_scripts', 'my_enqueue');
    
        2
  •  40
  •   forsvunnet    10 年前

    您的functions.php文件有一个片段:

    function custom_admin_js() {
        $url = get_bloginfo('template_directory') . '/js/wp-admin.js';
        echo '"<script type="text/javascript" src="'. $url . '"></script>"';
    }
    add_action('admin_footer', 'custom_admin_js');
    

    在WordPress 3.2.1上运行良好。

        3
  •  19
  •   Sean Fisher    14 年前
    <?php
    function add_jquery_data() {
        global $parent_file;
    
        if ( isset( $_GET['action'] ) && $_GET['action'] == 'edit' && isset( $_GET['post'] ) && $parent_file == 'edit.php') {
        // Do some stuff.
        }
    }
    
    add_filter('admin_head', 'add_jquery_data');
    
    ?>
    
        4
  •  3
  •   Shaun Cockerill    6 年前

    admin_enqueue_scripts wp_enqueue_script 是将javascript文件添加到仪表板的首选方法。

    // I'm using an anonymous function for brevity.
    add_action( 'admin_enqueue_scripts', function() {
        wp_enqueue_script( 'handle', plugin_dir_url( __FILE__ ) . '/script.js' );
    } );
    

    但是,如果要使用php函数输出javascript, wp_add_inline_script 似乎不起作用。相反,您可以使用 admin_print_scripts 直接回送脚本,包括脚本标记本身。只需确保将优先级设置为高,以便在任何所需的库(如 jQuery .

    add_action( 'admin_print_scripts', function() {
        // I'm using NOWDOC notation to allow line breaks and unescaped quotation marks.
        echo <<<'EOT'
    <script type="text/javascript">
    jQuery(function($){
        // Do stuff here.
    });
    </script>
    EOT;
    }, PHP_INT_MAX );