Il me faut ajouter au champ extrait l'éditeur TinyMCE Advanced, des idées?
J'ai le plugin qTranslate (multilingue), et il est impossible de connecter l'extrait avec ce plugin et un éditeur.
Merci
Il suffit de remplacer la sortie par défaut. Assurez-vous de bien extraire 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 un plugin ou dans le functions.php
de votre thème.
Un moyen simple consiste à utiliser le plugin Extrait de texte enrichi
Le plugin utilise la fonction wp_editor pour générer un éditeur de texte enrichi pour les extraits de pages/publications. Il ne fonctionnera donc que dans WordPress version 3.3 ou ultérieure.
Suivez la solution, ajoutez un extrait de l'éditeur wysiwyg juste après le titre du message.
Ajouter une classe de suivi à votre projet Wordpress en 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'
]
);
}
}
Puis ajoutez au fichier functions.php
les lignes suivantes:
require_once __DIR__ . '/excerpt.php';
$excerpt = new Excerpt();
vous devrez peut-être utiliser la fonction wp_editor
pour obtenir un éditeur riche, vous devrez alors supprimer toutes les fonctions de sanitize avec get_post_meta
(ou update_post_meta
), vous devrez alors utiliser la fonction htmlspecialchars_decode
pour obtenir le contenu enrichi.
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' );