Ajout d'un éditeur de texte riche à l'extrait
4 réponses
- votes
-
- 2012-07-12
Remplacez simplement la sortiepar défaut. Assurez-vous dene pas échapper l'extrait avant de l'envoyer à l'éditeur:
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 ); } }
Enregistrez ce code dans unplugin ou dans
functions.php
de votrethème.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
.-
Merci,fonctionnetoujoursprêt à l'emploien 2018pour WP 4.9.x :)Thanks, still works out of the box in 2018 for WP 4.9.x :)
- 0
- 2018-06-13
- moped
-
Fonctionneparfaitement dans la version 5.1 (février 2019),merci!Works perfectly in 5.1 version (Feb 2019), thanks!
- 0
- 2019-02-24
- Mayur Chauhan
-
Fonctionnetoujoursen 2020,même après Gutenberg (bien queje ne l'aitesté qu'avec leplugin "Classic Editor" activé)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
Unmoyen simple consiste à utiliser leplugin Extrait detexteenrichi
Leplugin utilise lafonction wp_editor pourgénérer un éditeur detexte richepour lesextraits depage/article,doncne fonctionnera que dans WordPress 3.3 ou supérieur.
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.
-
Je l'essaye,maisilestincompatible avec leplugin qTranslate,uneidéepour lefairefonctionner?I try it, but it's incompatible with qTranslate plugin, any idea to make it work?
- 0
- 2012-07-12
- Marta
-
Je vais l'examiner.I will look into it.
- 0
- 2012-07-12
- Pontus Abrahamsson
-
Uneidée depourquoi l'extraitn'estpas une zone detexte richepar défaut?Any idea why excerpt is not a rich text box by default?
- 0
- 2012-08-22
- urok93
-
- 2013-11-29
vous devrezpeut-être utiliser lafonction
wp_editor
pour devenir un éditeur riche,alors vous devez supprimertoutes lesfonctions denettoyage avecget_post_meta
(ouupdate_post_meta
),alors vous devriez utiliser lafonctionhtmlspecialchars_decode
pour obtenir le contenu riche.examinez ceprincipe:
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' );
-
Veuillez ajouter uneexplication à votre réponse: **pourquoi ** celapourrait-il résoudre leproblème?Please add an explanation to your answer: **why** could that solve the problem?
- 0
- 2013-11-29
- fuxia
-
- 2015-09-30
Suivez la solution,ajoutez unextrait de l'éditeur wysiwygjuste après letitre dumessage.
Ajoutez une classe de suivi à votreprojet Wordpressen tant que
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' ] ); } }
Ensuite,ajoutez aufichier
functions.php
les lignes suivantes: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();
J'aibesoin d'ajouter dans le champ d'extrait l'éditeur TinyMCE Advanced,desidées?
J'ai leplugin qTranslate (multilingue),et ilestimpossible de connecter l'extrait avec cepluginet un éditeur.
Merci