Adăugarea unui editor de text avansat în Excerpt

12 iul. 2012, 12:45:59
Vizualizări: 15.7K
Voturi: 8

Am nevoie să adaug editorul TinyMCE Advanced în câmpul Excerpt, aveți idei?

Am pluginul qTranslate (multilimbă), și este imposibil să conectez Excerpt cu acest plugin și un editor.

Mulțumesc

0
Toate răspunsurile la întrebare 4
5
16

Doar înlocuiți output-ul implicit. Asigurați-vă că decodificați excerpt-ul înainte de a-l trimite la editor:

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

/**
 * Înlocuiește editorul implicit de excerpt cu TinyMCE.
 */
class T5_Richtext_Excerpt
{
    /**
     * Înlocuiește cutiile meta.
     *
     * @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 pentru cutia meta.
     *
     * @param  object $post
     * @return void
     */
    public static function show( $post )
    {
    ?>
        <label class="screen-reader-text" for="excerpt"><?php
        _e( 'Excerpt' )
        ?></label>
        <?php
        // Folosim numele implicit, 'excerpt', ca să nu trebuiască să ne ocupăm de
        // salvarea, alte filtre etc.
        wp_editor(
            self::unescape( $post->post_excerpt ),
            'excerpt',
            array (
            'textarea_rows' => 15
        ,   'media_buttons' => FALSE
        ,   'teeny'         => TRUE
        ,   'tinymce'       => TRUE
            )
        );
    }

    /**
     * Excerpt-ul este de obicei codat. Acest lucru strică editorul HTML.
     *
     * @param  string $str
     * @return string
     */
    public static function unescape( $str )
    {
        return str_replace(
            array ( '&lt;', '&gt;', '&quot;', '&amp;', '&nbsp;', '&amp;nbsp;' )
        ,   array ( '<',    '>',    '"',      '&',     ' ', ' ' )
        ,   $str
        );
    }
}

Descriere imagine

Salvați acest cod într-un plugin sau în functions.php al temei dumneavoastră.

12 iul. 2012 20:15:26
Comentarii

Mulțumesc, încă funcționează fără probleme în 2018 pentru WP 4.9.x :)

moped moped
13 iun. 2018 15:05:59

Funcționează perfect în versiunea 5.1 (februarie 2019), mulțumesc!

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

Încă funcționează în 2020, chiar și după Gutenberg (deși am testat doar cu plugin-ul "Classic Editor" activat)

squarecandy squarecandy
1 feb. 2020 04:59:41

Încă funcționează în 5.8.1 (septembrie 2021). Mă întreb cum să adaug și butonul "Adaugă Media".

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

Am descoperit că acest fragment de cod pare să intre în conflict cu WooCommerce, făcând imposibilă actualizarea "Descrierii scurte a produsului". Modificările pur și simplu nu se salvează. Mi-a luat ceva timp să realizez asta, așa că aș vrea să atenționez și pe alții.

Tomas Eklund Tomas Eklund
25 oct. 2022 12:47:14
3

O modalitate simplă este să folosești pluginul Rich Text Excerpt

Plugin-ul utilizează funcția wp_editor pentru a genera un editor de text avansat pentru rezumatele paginilor/articolelor, deci va funcționa doar în WordPress 3.3 sau versiuni mai noi.

12 iul. 2012 12:57:24
Comentarii

Am încercat, dar este incompatibil cu plugin-ul qTranslate, ai vreo idee cum să-l fac să funcționeze?

Marta Marta
12 iul. 2012 13:12:04

Voi investiga problema.

Pontus Abrahamsson Pontus Abrahamsson
12 iul. 2012 13:36:34

Știi cumva de ce excerpt nu este un câmp de text formatat implicit?

urok93 urok93
22 aug. 2012 16:45:06
1

poate fi necesar să folosești funcția wp_editor pentru a obține un editor avansat, apoi ar trebui să elimini orice funcții de sanitizare cu get_post_meta (sau update_post_meta), iar apoi să utilizezi funcția htmlspecialchars_decode pentru a obține conținutul avansat..

urmărește acest principiu:

add_action( 'add_meta_boxes', 'adding_a_new_metaabox' );                
function adding_a_new_metaabox() 
    {   
        add_meta_box('html_myid_31_section', 'TITLU Salutare', 'my_output_funct');
    }

function my_output_funct( $post ) 
    {
    //deci, nu este nevoie să folosești esc_attr în fața lui 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
Comentarii

Te rog să adaugi o explicație la răspunsul tău: de ce ar putea rezolva problema?

fuxia fuxia
29 nov. 2013 02:46:05
1

Următoarea soluție adaugă un editor wysiwyg pentru excerpt imediat după titlul postului.

Excerpt

Adăugați următoarea clasă în proiectul WordPress ca 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);
    }

    /**
     * Elimină metabox-ul din postare
     */
    public function remove_excerpt_metabox() {
        remove_meta_box('postexcerpt', 'post', 'normal');
    }

    /**
     * Elimină tag-urile HTML
     *
     * @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><>');
    }

    /**
     * Semnul "mai mult"...
     *
     * @return string
     */
    public function excerpt_more() {
        return '&hellip;';
    }

    /**
     * Editorul de excerpt după titlul postării.
     *
     * @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'
            ]
        );
    }
}

Apoi adăugați în fișierul functions.php următoarele linii:

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

nu pare să funcționeze

woony woony
29 iun. 2023 10:14:29