it-swarm.com.de

Wie benutze ich wpLink ohne Editor?

Ich möchte eine Theme-Option erstellen, um einen Link hinzuzufügen. Das Laden dieser Skripte und das Auslösen des Dialogs funktioniert einwandfrei, wenn der WP-Editor vorhanden ist.

wp_enqueue_script('wplink');
wp_enqueue_script('wpdialogs');
wp_enqueue_script('wpdialogs-popup');
wp_enqueue_style('wp-jquery-ui-dialog');
wp_enqueue_style('thickbox');

wp_editor('', 'unique_id', array('editor_class'=>'hidden'));



$('.add-link').on("click", function(e){
    e.preventDefault();

      wpLink.open();
      return false;
});

aber wie macht man es öffnen Link-Dialogfeld ohne Editor anwesend?

Das ist es, wonach ich strebe

 enter image description here  enter image description here 

11
Benn

Es gibt keinen ethischen Weg, dies zu tun. Aber es gibt immer noch einen Weg, dies zu tun. WordPress hat ein wpLink-Skript geschrieben, wobei berücksichtigt wurde, dass der Editor vorhanden ist, das WordPress-Handle jedoch weiterhin vorhanden ist, wenn der Editor nicht vorhanden ist. (Good Thing)

Betrachten Sie dieses Beispiel und nehmen Sie an, dass wir es im Front-End in der Fußzeile verwenden.

Stellen Sie zuerst den wesentlichen Stil und die Skripte in die Warteschlange.

function enqueue_scripts_209490() {
    wp_enqueue_script('wplink');
    wp_enqueue_style( 'editor-buttons' );
}
add_action('wp_enqueue_scripts', 'enqueue_scripts_209490');

Haken Sie nun diese Funktion in die Fußzeile ein Lesen Sie die Inline-Kommentare

function display_wplink_html_209490() {
    //Our textarea, click to open the link edior and insert the link in same editor
    echo '<textarea id="example_209490"></textarea>';

    // Require the core editor class so we can call wp_link_dialog function to print the HTML.
    // Luckly it is public static method ;)
    require_once ABSPATH . "wp-includes/class-wp-editor.php";
    _WP_Editors::wp_link_dialog(); ?>

    <script type="text/javascript">
        /* We need ajaxurl to send ajax to retrive links */
        var ajaxurl = "<?php echo admin_url( 'admin-ajax.php'); ?>";
        jQuery(document).ready(function (){
            jQuery('#example_209490').click(function (){
                wpLink.open('example_209490'); /* Bind to open link editor! */
            });
        })
    </script><?php
}
add_action('wp_footer', 'display_wplink_html_209490');

Hinweis: Es funktioniert nicht, wenn der Benutzer nicht angemeldet ist, da der Fehler setUserSetting nicht definiert ist und keine Antwort auf AJAX erfolgt, wenn der Benutzer nicht angemeldet ist.

7
Sumit