web-dev-qa-db-fra.com

Ajout d'un éditeur de texte enrichi à l'extrait

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

6
Marta

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 ( '&lt;', '&gt;', '&quot;', '&amp;', '&nbsp;', '&amp;nbsp;' )
        ,   array ( '<',    '>',    '"',      '&',     ' ', ' ' )
        ,   $str
        );
    }
}

enter image description here

Enregistrez ce code dans un plugin ou dans le functions.php de votre thème.

14
fuxia

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.

4
Pontus Abrahamsson

Suivez la solution, ajoutez un extrait de l'éditeur wysiwyg juste après le titre du message.

 Excerpt 

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 '&hellip;';
    }

    /**
     * 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();
0
OzzyCzech

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.

regardez à travers ce principe:

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' ); 
0
T.Todua