Come aggiungere un editor di testo avanzato al riassunto in WordPress

12 lug 2012, 12:45:59
Visualizzazioni: 15.7K
Voti: 8

Ho bisogno di aggiungere al campo excerpt l'editor TinyMCE Advanced, avete qualche idea?

Ho il plugin qTranslate (multilingua) ed è impossibile collegare l'excerpt con questo plugin e un editor.

Grazie

0
Tutte le risposte alla domanda 4
5
16

Sostituisci semplicemente l'output predefinito. Assicurati di rimuovere l'escape dall'excerpt prima di inviarlo all'editor:

add_action( 'add_meta_boxes', array ( 'T5_Richtext_Excerpt', 'switch_boxes' ) );

/**
 * Sostituisce l'editor predefinito dell'excerpt con TinyMCE.
 */
class T5_Richtext_Excerpt
{
    /**
     * Sostituisce le meta box.
     *
     * @return void
     */
    public static function switch_boxes()
    {
        if ( ! post_type_supports( $GLOBALS['post']->post_type, 'excerpt' ) )
        {
            return;
        }

        remove_meta_box(
            'postexcerpt' // ID
        ,   ''            // Screen, vuoto per supportare tutti i tipi di post
        ,   'normal'      // Contesto
        );

        add_meta_box(
            'postexcerpt2'     // Riutilizzare solo 'postexcerpt' non funziona.
        ,   __( 'Excerpt' )    // Titolo
        ,   array ( __CLASS__, 'show' ) // Funzione di visualizzazione
        ,   null              // Screen, utilizziamo tutti gli screen con meta box.
        ,   'normal'          // Contesto
        ,   'core'            // Priorità
        );
    }

    /**
     * Output per la meta box.
     *
     * @param  object $post
     * @return void
     */
    public static function show( $post )
    {
    ?>
        <label class="screen-reader-text" for="excerpt"><?php
        _e( 'Excerpt' )
        ?></label>
        <?php
        // Utilizziamo il nome predefinito, 'excerpt', così non dobbiamo preoccuparci
        // del salvataggio, altri filtri ecc.
        wp_editor(
            self::unescape( $post->post_excerpt ),
            'excerpt',
            array (
            'textarea_rows' => 15
        ,   'media_buttons' => FALSE
        ,   'teeny'         => TRUE
        ,   'tinymce'       => TRUE
            )
        );
    }

    /**
     * L'excerpt è solitamente con escape. Questo rompe l'editor HTML.
     *
     * @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

Salva questo codice in un plugin o nel file functions.php del tuo tema.

12 lug 2012 20:15:26
Commenti

Grazie, funziona ancora perfettamente nel 2018 con WP 4.9.x :)

moped moped
13 giu 2018 15:05:59

Funziona perfettamente nella versione 5.1 (febbraio 2019), grazie!

Mayur Chauhan Mayur Chauhan
25 feb 2019 00:33:26

Funziona ancora nel 2020, anche dopo Gutenberg (anche se l'ho testato solo con il plugin "Classic Editor" attivato)

squarecandy squarecandy
1 feb 2020 04:59:41

Ancora funzionante nella versione 5.8.1 (settembre 2021). Mi chiedo come aggiungere anche il pulsante Aggiungi media.

A. D'Alfonso A. D'Alfonso
25 set 2021 13:16:19

Ho scoperto che questo frammento di codice sembra essere in conflitto con WooCommerce poiché rende impossibile aggiornare la "Descrizione breve del prodotto". Le modifiche semplicemente non vengono salvate. Mi ci è voluto un po' per capirlo, quindi vorrei avvisare gli altri.

Tomas Eklund Tomas Eklund
25 ott 2022 12:47:14
3

Un modo semplice è utilizzare il plugin Rich Text Excerpt

Il plugin utilizza la funzione wp_editor per generare un editor di testo avanzato per i riassunti di pagine/post, quindi funzionerà solo su WordPress 3.3 o versioni successive.

12 lug 2012 12:57:24
Commenti

Ho provato, ma è incompatibile con il plugin qTranslate, hai qualche idea per farlo funzionare?

Marta Marta
12 lug 2012 13:12:04

Ci darò un'occhiata.

Pontus Abrahamsson Pontus Abrahamsson
12 lug 2012 13:36:34

Sai perché l'estratto non è una casella di testo avanzato di default?

urok93 urok93
22 ago 2012 16:45:06
1

potresti aver bisogno di usare la funzione wp_editor per ottenere un editor avanzato, poi dovresti rimuovere qualsiasi funzione di sanitizzazione con get_post_meta (o update_post_meta), quindi dovresti usare la funzione htmlspecialchars_decode per ottenere il contenuto avanzato..

guarda questo principio:

add_action( 'add_meta_boxes', 'adding_a_new_metaabox' );                
function adding_a_new_metaabox() 
    {   
        add_meta_box('html_myid_31_section', 'TITOLO Ciao', 'my_output_funct');
    }

function my_output_funct( $post ) 
    {
    //quindi, non è necessario usare esc_attr davanti a 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' ); 
29 nov 2013 02:02:42
Commenti

Per favore aggiungi una spiegazione alla tua risposta: perché potrebbe risolvere il problema?

fuxia fuxia
29 nov 2013 02:46:05
1

Segui questa soluzione per aggiungere un editor wysiwyg per l'excerpt subito dopo il titolo del post.

Excerpt

Aggiungi la seguente classe al tuo progetto WordPress come 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);
    }

    /**
     * Rimuove il metabox dal post
     */
    public function remove_excerpt_metabox() {
        remove_meta_box('postexcerpt', 'post', 'normal');
    }

    /**
     * Rimuove i tag
     *
     * @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><>');
    }

    /**
     * Puntini di sospensione...
     *
     * @return string
     */
    public function excerpt_more() {
        return '&hellip;';
    }

    /**
     * Editor excerpt dopo il titolo del post.
     *
     * @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'
            ]
        );
    }
}

Poi aggiungi al file functions.php le seguenti righe:

require_once __DIR__ . '/excerpt.php';
$excerpt = new Excerpt();
30 set 2015 15:32:01
Commenti

non sembra funzionare

woony woony
29 giu 2023 10:14:29