it-swarm.com.de

Hinzufügen eines Rich-Text-Editors zum Auszug

Ich muss dem Auszugsfeld den TinyMCE Advanced-Editor hinzufügen. Irgendwelche Ideen?

Ich habe das qTranslate-Plugin (mehrsprachig) und es ist unmöglich, den Auszug mit diesem Plugin und einem Editor zu verbinden.

Vielen Dank

6
Marta

Ersetzen Sie einfach die Standardausgabe. Stellen Sie sicher, dass Sie den Auszug entziehen, bevor Sie ihn an den Editor senden:

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

Speichern Sie diesen Code in einem Plugin oder im functions.php Ihres Themas.

14
fuxia

Eine einfache Möglichkeit ist die Verwendung des Plugins Rich Text Excerpt

Das Plugin verwendet die Funktion wp_editor , um einen Rich-Text-Editor für Seiten-/Post-Auszüge zu generieren. Es funktioniert daher nur in WordPress 3.3 oder höher.

4

Folgen Sie der Lösung und fügen Sie den wysiwyg editor-Auszug direkt nach dem Titel des Beitrags hinzu.

 Excerpt 

Fügen Sie Ihrem Wordpress-Projekt die folgende Klasse als excerpt.php hinzu

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'
            ]
        );
    }
}

Fügen Sie dann folgende Zeilen zur functions.php-Datei hinzu:

require_once __DIR__ . '/excerpt.php';
$excerpt = new Excerpt();
0
OzzyCzech

möglicherweise müssen Sie die Funktion wp_editor verwenden, um den Rich-Editor zu erhalten. Anschließend sollten Sie alle Bereinigungsfunktionen mit get_post_meta (oder update_post_meta) entfernen. Anschließend müssen Sie die Funktion htmlspecialchars_decode verwenden, um den Rich-Content zu erhalten.

schauen Sie sich dieses Prinzip an:

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