在摘录中添加富文本编辑器
4 个回答
- 投票数
-
- 2012-07-12
只需替换默认输出即可.在将摘录发送给编辑器之前,请确保先对其进行转义:
add_action( 'add_meta_boxes', array ( 'T5_Richtext_Excerpt', 'switch_boxes' ) ); /** * Replaces the default excerpt editor with TinyMCE. */ class T5_Richtext_Excerpt { /** * Replaces the meta boxes. * * @return void */ public static function switch_boxes() { if ( ! post_type_supports( $GLOBALS['post']->post_type, 'excerpt' ) ) { return; } remove_meta_box( 'postexcerpt' // ID , '' // Screen, empty to support all post types , 'normal' // Context ); add_meta_box( 'postexcerpt2' // Reusing just 'postexcerpt' doesn't work. , __( 'Excerpt' ) // Title , array ( __CLASS__, 'show' ) // Display function , null // Screen, we use all screens with meta boxes. , 'normal' // Context , 'core' // Priority ); } /** * Output for the meta box. * * @param object $post * @return void */ public static function show( $post ) { ?> <label class="screen-reader-text" for="excerpt"><?php _e( 'Excerpt' ) ?></label> <?php // We use the default name, 'excerpt', so we don’t have to care about // saving, other filters etc. wp_editor( self::unescape( $post->post_excerpt ), 'excerpt', array ( 'textarea_rows' => 15 , 'media_buttons' => FALSE , 'teeny' => TRUE , 'tinymce' => TRUE ) ); } /** * The excerpt is escaped usually. This breaks the HTML editor. * * @param string $str * @return string */ public static function unescape( $str ) { return str_replace( array ( '<', '>', '"', '&', ' ', '&nbsp;' ) , array ( '<', '>', '"', '&', ' ', ' ' ) , $str ); } }
将此代码保存在插件中或主题的
functions.php
中.Just replace the default output. Make sure you unescape the excerpt before you send it to the editor:
add_action( 'add_meta_boxes', array ( 'T5_Richtext_Excerpt', 'switch_boxes' ) ); /** * Replaces the default excerpt editor with TinyMCE. */ class T5_Richtext_Excerpt { /** * Replaces the meta boxes. * * @return void */ public static function switch_boxes() { if ( ! post_type_supports( $GLOBALS['post']->post_type, 'excerpt' ) ) { return; } remove_meta_box( 'postexcerpt' // ID , '' // Screen, empty to support all post types , 'normal' // Context ); add_meta_box( 'postexcerpt2' // Reusing just 'postexcerpt' doesn't work. , __( 'Excerpt' ) // Title , array ( __CLASS__, 'show' ) // Display function , null // Screen, we use all screens with meta boxes. , 'normal' // Context , 'core' // Priority ); } /** * Output for the meta box. * * @param object $post * @return void */ public static function show( $post ) { ?> <label class="screen-reader-text" for="excerpt"><?php _e( 'Excerpt' ) ?></label> <?php // We use the default name, 'excerpt', so we don’t have to care about // saving, other filters etc. wp_editor( self::unescape( $post->post_excerpt ), 'excerpt', array ( 'textarea_rows' => 15 , 'media_buttons' => FALSE , 'teeny' => TRUE , 'tinymce' => TRUE ) ); } /** * The excerpt is escaped usually. This breaks the HTML editor. * * @param string $str * @return string */ public static function unescape( $str ) { return str_replace( array ( '<', '>', '"', '&', ' ', '&nbsp;' ) , array ( '<', '>', '"', '&', ' ', ' ' ) , $str ); } }
Save this code in a plugin or in your theme’s
functions.php
.-
谢谢,仍然可以在WP 4.9.x的2018年开箱即用:)Thanks, still works out of the box in 2018 for WP 4.9.x :)
- 0
- 2018-06-13
- moped
-
完全可以在5.1版本(2019年2月)中运行,谢谢!Works perfectly in 5.1 version (Feb 2019), thanks!
- 0
- 2019-02-24
- Mayur Chauhan
-
甚至在Gutenberg之后也可以在2020年使用(尽管我仅在启用"经典编辑器"插件的情况下对其进行了测试)Still works in 2020, even post-Gutenberg (though I only tested it with "Classic Editor" plugin enabled)
- 0
- 2020-02-01
- squarecandy
-
- 2012-07-12
A simple way is to use the plugin Rich Text Excerpt
The Plugin uses the wp_editor function to generate a rich text editor for page/post excerpts, so will only work in WordPress 3.3 or greater.
-
我尝试过,但是它与qTranslate插件不兼容,是否有使其工作的想法?I try it, but it's incompatible with qTranslate plugin, any idea to make it work?
- 0
- 2012-07-12
- Marta
-
我会仔细看看的.I will look into it.
- 0
- 2012-07-12
- Pontus Abrahamsson
-
知道为什么摘录默认情况下不是富文本框吗?Any idea why excerpt is not a rich text box by default?
- 0
- 2012-08-22
- urok93
-
- 2013-11-29
您可能需要使用
wp_editor
函数来获得丰富的编辑器,然后应使用get_post_meta
(或update_post_meta
)删除所有清理函数,那么您应该使用htmlspecialchars_decode
函数获取丰富的内容.仔细研究一下这个原则:
add_action( 'add_meta_boxes', 'adding_a_new_metaabox' ); function adding_a_new_metaabox() { add_meta_box('html_myid_31_section', 'TITLE Hellooo', 'my_output_funct'); } function my_output_funct( $post ) { //so, dont ned to use esc_attr in front of get_post_meta $valueeee2= get_post_meta($_GET['post'], 'SMTH_METANAME' , true ) ; wp_editor( htmlspecialchars_decode($valueeee2), 'mettaabox_ID_stylee', $settings = array('textarea_name'=>'MyInputNAMEE') ); } function save_my_post_data( $post_id ) { if (!empty($_POST['MyInputNAMEE'])) { $datta=htmlspecialchars($_POST['MyInputNAMEE']); update_post_meta($post_id, 'SMTH_METANAME', $datta ); } } add_action( 'save_post', 'save_my_post_data' );
you may need to use
wp_editor
function to get rich editor, then you should remove any sanitize functions withget_post_meta
(orupdate_post_meta
), then you should usehtmlspecialchars_decode
function to get the rich content..look through this principle:
add_action( 'add_meta_boxes', 'adding_a_new_metaabox' ); function adding_a_new_metaabox() { add_meta_box('html_myid_31_section', 'TITLE Hellooo', 'my_output_funct'); } function my_output_funct( $post ) { //so, dont ned to use esc_attr in front of get_post_meta $valueeee2= get_post_meta($_GET['post'], 'SMTH_METANAME' , true ) ; wp_editor( htmlspecialchars_decode($valueeee2), 'mettaabox_ID_stylee', $settings = array('textarea_name'=>'MyInputNAMEE') ); } function save_my_post_data( $post_id ) { if (!empty($_POST['MyInputNAMEE'])) { $datta=htmlspecialchars($_POST['MyInputNAMEE']); update_post_meta($post_id, 'SMTH_METANAME', $datta ); } } add_action( 'save_post', 'save_my_post_data' );
-
请为您的答案添加一个解释:**为什么**能解决问题?Please add an explanation to your answer: **why** could that solve the problem?
- 0
- 2013-11-29
- fuxia
-
- 2015-09-30
跟随解决方案,在帖子标题之后添加摘录的所见即所得编辑器.
以
将关注类添加到您的Wordpress项目中excerpt.php
class Excerpt { public function __construct() { add_filter('excerpt_more', [$this, 'excerpt_more']); add_action('edit_form_after_title', [$this, 'excerpt']); add_action('admin_menu', [$this, 'remove_excerpt_metabox']); add_filter('wp_trim_excerpt', [$this, 'wp_trim_excerpt'], 10, 2); } /** * Remove metabox from post */ public function remove_excerpt_metabox() { remove_meta_box('postexcerpt', 'post', 'normal'); } /** * Strip tags * * @param string $text * @return string */ public function wp_trim_excerpt($text = '') { return strip_tags($text, '<a><strong><em><b><i><code><ul><ol><li><blockquote><del><ins><img><pre><code><>'); } /** * More sign... * * @return string */ public function excerpt_more() { return '…'; } /** * Excerpt editor after post title. * * @param $post */ public function excerpt($post) { if ($post->post_type !== 'post') return; wp_editor( html_entity_decode($post->post_excerpt), 'html-excerpt', [ 'teeny' => true, 'quicktags' => true, 'wpautop' => true, 'media_buttons' => false, 'textarea_rows' => 7, 'textarea_name' => 'excerpt' ] ); } }
然后将以下代码添加到
functions.php
文件中:require_once __DIR__ . '/excerpt.php'; $excerpt = new Excerpt();
Follow solution add excerpt wysiwyg editor right after post title.
Add follow class to your Wordpress project as
excerpt.php
class Excerpt { public function __construct() { add_filter('excerpt_more', [$this, 'excerpt_more']); add_action('edit_form_after_title', [$this, 'excerpt']); add_action('admin_menu', [$this, 'remove_excerpt_metabox']); add_filter('wp_trim_excerpt', [$this, 'wp_trim_excerpt'], 10, 2); } /** * Remove metabox from post */ public function remove_excerpt_metabox() { remove_meta_box('postexcerpt', 'post', 'normal'); } /** * Strip tags * * @param string $text * @return string */ public function wp_trim_excerpt($text = '') { return strip_tags($text, '<a><strong><em><b><i><code><ul><ol><li><blockquote><del><ins><img><pre><code><>'); } /** * More sign... * * @return string */ public function excerpt_more() { return '…'; } /** * Excerpt editor after post title. * * @param $post */ public function excerpt($post) { if ($post->post_type !== 'post') return; wp_editor( html_entity_decode($post->post_excerpt), 'html-excerpt', [ 'teeny' => true, 'quicktags' => true, 'wpautop' => true, 'media_buttons' => false, 'textarea_rows' => 7, 'textarea_name' => 'excerpt' ] ); } }
Then add to
functions.php
file follow lines:require_once __DIR__ . '/excerpt.php'; $excerpt = new Excerpt();
我需要在TinyMCE Advanced编辑器的摘录字段中添加任何想法吗?
我有qTranslate插件(多语言),因此无法将摘录与此插件和编辑器连接.
谢谢