无需修改核心文件的 Wordpress 管理员自定义
Wordpress Admin Customization Without Core File Modification
我在标题字段中添加了字数显示,类似于编辑post时的body字段(不要问我为什么,这是客户要求)。我已经开始工作了
- 通过连接到 "edit_form_after_title"
来显示计数
- 编辑 word-count.min.js 并为我的新计数器元素复制代码
- 编辑 post.min.js 并复制用于更改字数统计值的触发器处理程序(在第 960 行附近的 post.js 中搜索 // 字数统计)
现在我已经开始工作了,我的问题是如何让新的 javascript 代码存在于这些文件之外,这样它们就不会在升级时被清除?我已经创建了一个自定义 .js 文件并将其放入我的函数文件中,但我无法让它以相同的方式工作。该文件确实已加载,但如果我写的新 javascript 不在原始文件中,事情就无法正常工作。这可能只是我对 javascript 的有限了解,但我希望将此工作与 wordpress javascript 文件分开。
这是有效的 post.js 字数统计 javascript(首先是原始函数,其次是我复制的函数),它负责重新计算击键时的字数。注意:我还在代码中将 "ti" 变量设置得更高,其中 "co" 设置为标题字段。
// Original 'body' word count
if ( typeof(wpWordCount) != 'undefined' ) {
$document.triggerHandler('wpcountwords', [ co.val() ]);
co.keyup( function(e) {
var k = e.keyCode || e.charCode;
if ( k == last )
return true;
if ( 13 == k || 8 == last || 46 == last )
$document.triggerHandler('wpcountwords', [ co.val() ]);
last = k;
return true;
});
}
// Word count for Title
if ( typeof(wpWordCount_title) != 'undefined' ) {
$document.triggerHandler('wpWordCount_title', [ ti.val() ]);
ti.keyup( function(e) {
$document.triggerHandler('wpWordCount_title', [ ti.val() ]);
var k = e.keyCode || e.charCode;
if ( k == last )
return true;
if ( 13 == k || 8 == last || 46 == last )
$document.triggerHandler('wpWordCount_title', [ ti.val() ]);
last = k;
return true;
});
}
这是我的 duplicated/tweaked 函数,用于 word-count.js,它实际处理单词计数。
var wpWordCount_title;
! function (a, b) {
wpWordCount_title = {
settings: {
strip: /<[a-zA-Z\/][^<>]*>/g,
clean: /[0-9.(),;:!?%#$¿'"_+=\/-]+/g,
w: /\S\s+/g,
c: /\S/g
},
block: 0,
wc: function (c, d) {
var e = this,
f = a(".title-word-count"),
g = 0;
d === b && (d = wordCountL10n.type), "w" !== d && "c" !== d && (d = "w"), e.block || (e.block = 1, setTimeout(function () {
c && (c = c.replace(e.settings.strip, " ").replace(/ | /gi, " "), c = c.replace(e.settings.clean, ""), c.replace(e.settings[d], function () {
g++
})), f.html(g.toString()), setTimeout(function () {
e.block = 0
}, 2e3)
}, 1))
}
}, a(document).bind("wpWordCount_title", function (a, b) {
wpWordCount_title.wc(b)
})
}(jQuery);
我建议使用名为 Add Admin JavaScript 的插件。这使您可以轻松地将 JS 添加到每个管理页面,并且您可以使用文件或内联 JS。
我建议编写一个修改管理界面的插件,而不是修改 WordPress 核心,将其包含在主题中,或使用第三方插件。在您的插件中使用 admin_enqueue_scripts add_action,如下所示在管理员中加载您的脚本。
function load_custom_wp_admin_script() {
wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
}
add_action( 'admin_enqueue_scripts', 'load_custom_wp_admin_script' );
你应该检查这个 page in the WordPress Codex。
我在标题字段中添加了字数显示,类似于编辑post时的body字段(不要问我为什么,这是客户要求)。我已经开始工作了
- 通过连接到 "edit_form_after_title" 来显示计数
- 编辑 word-count.min.js 并为我的新计数器元素复制代码
- 编辑 post.min.js 并复制用于更改字数统计值的触发器处理程序(在第 960 行附近的 post.js 中搜索 // 字数统计)
现在我已经开始工作了,我的问题是如何让新的 javascript 代码存在于这些文件之外,这样它们就不会在升级时被清除?我已经创建了一个自定义 .js 文件并将其放入我的函数文件中,但我无法让它以相同的方式工作。该文件确实已加载,但如果我写的新 javascript 不在原始文件中,事情就无法正常工作。这可能只是我对 javascript 的有限了解,但我希望将此工作与 wordpress javascript 文件分开。
这是有效的 post.js 字数统计 javascript(首先是原始函数,其次是我复制的函数),它负责重新计算击键时的字数。注意:我还在代码中将 "ti" 变量设置得更高,其中 "co" 设置为标题字段。
// Original 'body' word count
if ( typeof(wpWordCount) != 'undefined' ) {
$document.triggerHandler('wpcountwords', [ co.val() ]);
co.keyup( function(e) {
var k = e.keyCode || e.charCode;
if ( k == last )
return true;
if ( 13 == k || 8 == last || 46 == last )
$document.triggerHandler('wpcountwords', [ co.val() ]);
last = k;
return true;
});
}
// Word count for Title
if ( typeof(wpWordCount_title) != 'undefined' ) {
$document.triggerHandler('wpWordCount_title', [ ti.val() ]);
ti.keyup( function(e) {
$document.triggerHandler('wpWordCount_title', [ ti.val() ]);
var k = e.keyCode || e.charCode;
if ( k == last )
return true;
if ( 13 == k || 8 == last || 46 == last )
$document.triggerHandler('wpWordCount_title', [ ti.val() ]);
last = k;
return true;
});
}
这是我的 duplicated/tweaked 函数,用于 word-count.js,它实际处理单词计数。
var wpWordCount_title;
! function (a, b) {
wpWordCount_title = {
settings: {
strip: /<[a-zA-Z\/][^<>]*>/g,
clean: /[0-9.(),;:!?%#$¿'"_+=\/-]+/g,
w: /\S\s+/g,
c: /\S/g
},
block: 0,
wc: function (c, d) {
var e = this,
f = a(".title-word-count"),
g = 0;
d === b && (d = wordCountL10n.type), "w" !== d && "c" !== d && (d = "w"), e.block || (e.block = 1, setTimeout(function () {
c && (c = c.replace(e.settings.strip, " ").replace(/ | /gi, " "), c = c.replace(e.settings.clean, ""), c.replace(e.settings[d], function () {
g++
})), f.html(g.toString()), setTimeout(function () {
e.block = 0
}, 2e3)
}, 1))
}
}, a(document).bind("wpWordCount_title", function (a, b) {
wpWordCount_title.wc(b)
})
}(jQuery);
我建议使用名为 Add Admin JavaScript 的插件。这使您可以轻松地将 JS 添加到每个管理页面,并且您可以使用文件或内联 JS。
我建议编写一个修改管理界面的插件,而不是修改 WordPress 核心,将其包含在主题中,或使用第三方插件。在您的插件中使用 admin_enqueue_scripts add_action,如下所示在管理员中加载您的脚本。
function load_custom_wp_admin_script() {
wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
}
add_action( 'admin_enqueue_scripts', 'load_custom_wp_admin_script' );
你应该检查这个 page in the WordPress Codex。