0

我制作了一个小的 jQuery 脚本来从其他文件导入值并将这些值作为自定义元标记插入到 WordPress POST 页面中。

当我创建新帖子时,表单显示在帖子内容区域下方,并且每件事都 100% 有效。

问题是,如果我按下“编辑帖子”按钮/链接,那么它会加载帖子编辑页面,但没有显示任何内容。只是加载了一个白屏,所以我不能编辑这篇文章。

这是我的脚本:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>

<input name="file" type="text" id="file">
<script type="text/javascript">
    $(document).ready(function() {
        $('.button').click(function() {
            var val = $('#file').val();
            $.get('import.php', {file: val}, function(data) {            
                result = $.parseJSON(data);
                $("input[name='nick_name']").val(result.name);
                $("input[name='work_city']").val(result.location);

            });
        });
    });
    </script>

<input type="button" class="button" value="GET/IMPORT">

我还尝试添加此脚本(在 jquery.min.js 之后):

<script type="text/javascript">
$.noConflict(true);
</script>

然后编辑帖子页面工作但我无法使用我的自定义表单/按钮。

我的问题是:如何在不与 WordPress 编辑帖子页面发生冲突的情况下加载此脚本?

如果我删除:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>

从我的脚本中,所有页面都加载正常,但是我的自定义表单/按钮不起作用。

最新更新:我得到了它的工作 :D :D :D 只是测试我应该在何时何地加载此脚本以成功获得我的结果。我开始编辑 /wp-admin/admin-header.php (我知道不建议编辑 CORE 文件,但我只是为了调试而这样做!)首先,我在打开之前插入了我在第 1 行使用的 jQuery 脚本

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>

然后我去了POST NEW页面,我可以看到一些不同的字体大小,但我想要的功能在那里,我可以使用我的按钮。所以我打开了EDIT POST页面,我可以看到 EDIT PAGE!现在 EDIT PAGE 也在工作。最后我发现如果我在开头插入这个 jQuery 脚本,LINE 59 in /wp-admin/admin-header.php那么每件事都会100% 工作:D 设计 CSS 看起来不错,功能就在那里!

现在我需要帮助将此脚本插入/粘贴到 admin-header.php 中的第 59 行 我如何使用 functions.php 来做到这一点?

4

2 回答 2

0

首先,编辑 wordpress 核心似乎是一件坏事。但是如果你想这样做,不要再包含 jQuery。并且不要使用 $ 符号,请参见以下示例:

jQuery(".SomeClass").click(function(){
    console.log("Some Text");
});

//Therefore you could do something like this
<script type="text/javascript">
  jQuery(document).ready(function() {
       jQuery('.button-test-class').click(function() {
             //Do what you want here, for this we'll write some text to the console
             console.log("Some Text");
        });
  });
</script>

<input type="button" class="button-test-class button" value="Button Test">
于 2013-11-07T15:19:33.207 回答
0

如何添加脚本 WordPress 方式:

add_action( 'wp_enqueue_scripts', 'pjso_my_scripts' );
function pjso_my_scripts() {
    $handle = 'script_name';
    $src = '/path/to/script.js';
    $deps = array( 
        'jquery',
    );
    // add any other dependencies to the array, using their $handle
    $ver = 'x.x';  // if you leave this NULL, 
                   // then it'll use WordPress's version number
    $in_footer = true; // if you want it to load in the page footer
    wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
}

要仅在后端的编辑帖子屏幕上执行此操作,您可以将admin_enqueue_scripts钩子与以下内容结合使用get_current_screen()

add_action( 'admin_enqueue_scripts', 'pjso_my_scripts' );
function pjso_my_scripts() {
    $screen = get_current_screen();
    if( 'post' != $screen->base || 'edit' != $screen->parent_base ) {
        return; // bail out if we're not on an Edit Post screen
    }
    $handle = 'script_name';
    $src = '/path/to/script.js';
    $deps = array( 
        'jquery',
    );
    // add any other dependencies to the array, using their $handle
    $ver = 'x.x';  // if you leave this NULL, 
                   // then it'll use WordPress's version number
    $in_footer = true; // if you want it to load in the page footer
    wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
}

应该可以,虽然我没有测试过。

这段代码可以放在你的主题functions.php文件中,或者你可以编写一个自定义插件,这样它就可以在未来的任何主题更改中持续存在。

参考

于 2013-11-07T15:48:17.630 回答