这与其说是客户的锻炼,不如说是客户的锻炼。
无论如何I\'m trying to disable the quicktags when you\'re on the dashboard 然后点击Comments > Edit Comment. 在该屏幕上,有一个带有quicktags的TinyMCE,textarea的id为“content”。
我知道在WordPress核心中,这可以在wp管理/编辑表单注释的第67行更改。php通过更改以下内容:
wp_editor( $comment->comment_content, \'content\', array( \'media_buttons\' => false, \'tinymce\' => false, \'quicktags\' => $quicktags_settings ) );
对此(quicktags设置为false):
wp_editor( $comment->comment_content, \'content\', array( \'media_buttons\' => false, \'tinymce\' => false, \'quicktags\' => false ) );
但我显然不想编辑核心,而是想通过过滤器/挂钩来实现这一点。这就是我所尝试的。
function disable_tinymce_quicktags_comments ( $args ) {
ob_start();
$comment = get_comment_to_edit( $comment_id );
wp_editor( $comment->comment_content, \'content\', array( \'quicktags\' => false ) );
$args = ob_get_contents();
ob_end_clean();
return $args;
}
add_filter( \'admin_init\', \'disable_tinymce_quicktags_comments\' );
A
var_dump
$args的返回后没有显示任何内容,这是文本编辑器在编辑注释屏幕上显示此功能时的样子:
我是在试图实现不可能的目标,还是在使用错误的钩子?我仍在学习挂钩和PHP。有什么建议吗?谢谢。:-)
最合适的回答,由SO网友:doublesharp 整理而成
签出代码后,最好的方法是使用wp_editor_settings
筛选输入/wp-includes/class-wp-editor.php
. 当你打电话的时候wp_editor()
它在内部拨打_WP_Editors::editor($content, $editor_id, $settings);
. 此函数首先通过$settings
阵列通过parse_settings()
使用该过滤器。
add_filter( \'wp_editor_settings\', \'remove_editor_quicktags\', 10, 2 );
function remove_editor_quicktags( $settings, $id ){
// $id will be \'content\' in your example
// use it in an if or make it gone for everything...
// use $pagenow to determine if you are on the edit comments page.
global $pagenow;
if ( $pagenow === \'comment.php\' ){
$settings[\'quicktags\'] = false;
}
return $settings;
}
注意-我刚刚意识到这个过滤器从WordPress 4.0开始是新的,所以您需要它或更新的过滤器来利用它。这也会影响admin上的所有TinyMCE实例