Verwenden von TinyMce mit Textbereichen in Meta-Feldern für benutzerdefinierte Beitragstypen

7

Ich versuche, das Plugin http://www.tinymce.com/ zu verwenden, um meinen Textbereichen in meinen von mir erstellten Meta-Boxen ein Tinymce hinzuzufügen. Ich habe andere Wege gegoogelt und entweder kann ich es nicht zum Laufen bringen oder habe das Konzept nicht verstanden. SO ist es das, was ich jetzt versuche -

Ich habe versucht, ein Plugin zu erstellen, um das Skript zu meinem Admin-Dashboard hinzuzufügen.

add_action('admin_init', 'admin_load_scripts'); 
function admin_load_scripts() { 
    $js_file = plugins_url( '/tinymce/jquery.tinymce.min.js', __FILE__ );  
    wp_enqueue_script('jquery.tinymce.min', $js_file, array('jquery')); 
}

Dann muss ich es so nennen -

<script>
        tinymce.init({selector:'textarea'});
</script>

Aber ich bin mir nicht sicher, wie ich das machen soll, da dies für das Backend und nicht für das Frontend ist. Wie kann ich das erreichen?

AKTUALISIERT

Dies ist mein Code für die Meta-Boxen. http://pastebin.com/WcC51uA9

Ich habe die folgenden Methoden ausprobiert (natürlich in functions.php), und zum größten Teil haben sie entweder einfach nicht funktioniert oder wurden oben auf der Seite oder unten auf der Seite angezeigt. Sie tauchten überhaupt nicht im Textbereich auf. --- ---.

http://pastebin.com/Ct0mF6q7

http://pastebin.com/R6t0ij6h

http://pastebin.com/dcczcVby

http://pastebin.com/yt1uRS5U

Reich
quelle
Warum nicht die wp_editor()Funktion nutzen?
Helgatheviking

Antworten:

14

Hier ist ein Pastebin mit Ihrem Code.

Holen Sie sich den alten Wert des tinyMCE

$meta_biography = get_post_meta( $post->ID, 'meta_biography', true );

Rufen Sie den TinyMCE-Editor auf

wp_editor( $meta_biography, 'biography', array(
    'wpautop'       => true,
    'media_buttons' => false,
    'textarea_name' => 'meta_biography',
    'textarea_rows' => 10,
    'teeny'         => true
) );

Speichern Sie den Editorwert oder löschen Sie alte Werte, wenn nichts vorhanden ist.

if( isset( $_POST['meta_biography'] ) && $_POST['meta_biography'] != '' ) {
    update_post_meta( $post_id, 'meta_biography', $_POST['meta_biography'] );
} else {
    delete_post_meta( $post_id, 'meta_biography' );
}

Wenn Sie dem Editor weitere Optionen hinzufügen möchten, können Sie den Codex anzeigen oder diesen schönen WPTuts-Artikel lesen . Sie möchten das verwenden tinymceund ihm eine Reihe von Einstellungen übergeben. Sie könnten das entfernen, teeny => truein dem wp_editor()seit der Codex sagt , dass es nur minimale Editor Konfiguration verwenden.

Howdy_McGee
quelle
Vielen Dank. Eine letzte Frage, die ich hatte, war, dass ich den wptuts-Artikel und das Einstellungsarray gesehen habe, aber ich habe keine Erwähnung über die Übergabe eines Einstellungsarrays für das "Küchenspülbecken" gesehen. Irgendwelche Ideen dazu? Ich wollte einen Editor für ein anderes Feld erstellen, in dem nur die Schriftfarbe geändert werden kann.
Rich
@ mygm26 - im WPTuts-Artikel wird es übergeben theme_advanced_buttons1- wenn Sie eine zweite Zeile möchten, können Sie auch theme_advanced_buttons2oder beliebig viele Zeilen übergeben. Im WPTuts-Artikel finden Sie auch, wp_advan dessen Ende theme_advanced_buttons1Sie Ihre 2. oder 3. Reihe von Schaltflächen anzeigen müssen. Wenn Sie nur versuchen, die Farbe zu ändern, kann ich Ihnen empfehlen, in den Farbwähler zu schauen, der auch in Wordpress integriert ist.
Howdy_McGee
Ok, ich habe es verstanden, danke. Gibt es überhaupt eine Möglichkeit, das Spülbecken in bestimmten Fällen zu verstecken? Ich verwende den wp-Editor-Code für mehrere Textbereiche, wollte aber das Spülbecken auf einem von ihnen verstecken @Howdy_McGee
Rich
@ mygm26 Das bin ich mir nicht 100% sicher und habe versucht, die Antwort zu finden - Sie können sich auf diese Frage beziehen, aber wenn Sie es jemals herausfinden, weiß ich wie: wordpress.stackexchange.com/questions/117395/…
Howdy_McGee
2
// for pages use 'edit_page_form' as the first parameter. And see my comment below.
add_action( 'edit_form_advanced', 'my_meta_editor' ); 

function my_meta_editor() {

    // set 'your_meta_key' to the actual key
    $content = get_post_meta($post->ID, 'your_meta_key', true);

    // only low case [a-z], no hyphens and underscores
    $editor = 'mymetaeditor';

    // See my comment below
    $editor_settings = array();

    wp_editor( $content, $editor, $editor_settings);

}

Suchen Administrative Aktionen für edit_form_after_title, edit_form_after_editor, edit_form_advancedwenn Sie den Speicherort der Meta - Box ändern mögen.

Siehe auch wp_editor für Editoreinstellungen .

Max Yudin
quelle
Vielen Dank für die Antwort. Ich bin mir nicht sicher, wie ich das auf meine Situation anwenden soll. Ich werde meine Antwort mit dem Code aktualisieren, den ich zum Erstellen meiner Metaboxen verwende.
Rich
Wo immer Sie das Tinymce wollen, können Sie einfach etwas sagen wie: pastebin.com/6N5adFip - Nach meiner Erfahrung wird dies am besten in einem großen Inhaltsbereich platziert, z. B. unter Ihrem Haupt-Post-Editor oder was Sie haben.
Howdy_McGee
@Howdy_McGee ok also wenn ich den Code aus dem Pastebin in meine Theme-Funktionsdatei einfüge und die ID ersetze, wird der Editor für diesen Textbereich gerendert?
Rich
Theoretisch ja, alles, was @MaxYudin Ihnen gegeben hat, ist Möglichkeiten, wp_editor () zu zeigen; Sie sollten in der Lage sein, es von dort zum Laufen zu bringen. es ist ziemlich einfach. Andernfalls sollte eine schnelle Suche viele Ergebnisse liefern . Lassen Sie mich wissen, ob Sie es zum Laufen bringen können!
Howdy_McGee
1
Fügen Sie ihn zu dem functions.phpsich im themeVerzeichnis , das Sie verwenden.
Max Yudin
1

Diese Funktion hat bei mir perfekt funktioniert. Fügen Sie einfach Ihre Datei functions.php hinzu und erstellen Sie Textfelder für Ihre benutzerdefinierten Felder. Fertig:

//add tinymce editor to custom fields
function admin_add_wysiwyg_custom_field_textarea()
{ ?>
<script type="text/javascript">/* <![CDATA[ */
    jQuery(function($){
        var i=1;
        $('textarea').each(function(e)
        {
          var id = $(this).attr('id');
          if (!id)
          {
           id = 'customEditor-' + i++;
           $(this).attr('id',id);
          }
          tinyMCE.execCommand("mceAddEditor", false, id);
          tinyMCE.execCommand('mceAddControl', false, id);
        });
    });
/* ]]> */</script>
<?php }
add_action( 'admin_print_footer_scripts', 'admin_add_wysiwyg_custom_field_textarea', 99 );

Von hier genommen .

Salam El-Banna
quelle