我们尝试应用altered version 属于this (非常流行)自定义函数插件中的代码。stackoverflow甚至提到了这个问题,但由于用户的提问被删除,整个问题都被删除了。这是一个Google cached version. 紧密地modified code 仍然存在。
这是修改后的代码:
// Add Character Counter to the Excerpt Meta Box
function excerpt_count_js(){
if (\'page\' != get_post_type()) {
echo \'<script>jQuery(document).ready(function(){
jQuery("#postexcerpt .handlediv").after("<div style=\\"position:absolute;top:5px;right:80px;color:#666;\\"><small>Excerpt length: </small><input type=\\"text\\" value=\\"0\\" maxlength=\\"3\\" size=\\"3\\" id=\\"excerpt_counter\\" readonly=\\"\\" style=\\"background:#fff;\\"> <small>character(s). (128 Characters MAX)</small></div>");
jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
jQuery("#excerpt").keyup( function() {
jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
if ( jQuery("#excerpt_counter").val() >= 129 ) {
jQuery("#excerpt_counter").css("color","red");
} else {
jQuery("#excerpt_counter").css("color","green");
}
});
});</script>\';
}
}
add_action( \'admin_head-post.php\', \'excerpt_count_js\');
add_action( \'admin_head-post-new.php\', \'excerpt_count_js\');
它在摘录元框上运行良好,产生了预期的结果。
But it causes multiple issues on the Edit Media
screen. 虽然编码为仅加载if (\'page\' != get_post_type())
和上admin_head-post.php
或admin_head-post-new.php
.
这些问题是:
在Help
和Screen Options
按钮变得不可点击
Hover Effect
在管理侧栏上不起作用Description buttons
(比如b、i、img等)就消失了我们尝试了原版以及其他修改版本的脚本,但没有成功。
也提出了类似的问题here 和here 似乎使用相同的jQuery编码。不过,没有人报告任何问题。只是我们吗?
编辑:
由于您提出了问题,错误如下:
Uncaught TypeError: Cannot read property \'length\' of undefined
Uncaught TypeError: Cannot read property \'hasClass\' of undefined
最合适的回答,由SO网友:socki03 整理而成
好的,所以我不喜欢它的编写方式,所以我用不同的语法和更可读的结构稍微重写了它。
<?php
// Add Character Counter to the Excerpt Meta Box
function excerpt_count_js(){
if (\'page\' != get_post_type()) { ?>
<script>
(function($){
$(document).ready(function(){
if ( $(\'#postexcerpt\').length ) {
var maxChar = 128;
$excerpt = $(\'#excerpt\');
$("#postexcerpt .handlediv").after( \'<div style="position:absolute;top:5px;right:80px;color:#666;">\' +
\'<small>Excerpt length: </small>\' +
\'<input type="text" value="0" maxlength="3" size="3" id="excerpt_counter" readonly="" style="background:#fff;" /> \' +
\'<small>character(s). (\' + maxChar + \' Characters MAX)</small>\' +
\'</div>\'
);
$excerptCounter = $("#excerpt_counter");
$excerptCounter.val( $excerpt.val().length );
$excerpt.keyup( function() {
$excerptCounter.val( $excerpt.val().length );
var exColor = ( ( $excerptCounter.val() > maxChar ) ? \'red\' : \'green\' );
$excerptCounter.css( \'color\', exColor );
});
}
});
})(jQuery);
</script>
<?php }
}
add_action( \'admin_head-post.php\', \'excerpt_count_js\');
add_action( \'admin_head-post-new.php\', \'excerpt_count_js\');
?>
它没有检查是否
#postexcerpt
甚至在页面上,所以我添加了它,并试图清理它,使其更易于理解和更改。我不喜欢内联样式,但哦,好吧。
无论如何,我在2016年安装的干净的4.6.1安装上测试了这个,它运行得很好。如果这对你不起作用,请告诉我。