Comment utiliser wpLink sans éditeur?

10

Je voudrais créer une option de thème pour ajouter un lien. Le chargement de ces scripts et le déclenchement du dialogue fonctionnent correctement si l'éditeur wp est présent.

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

mais comment le faire ouvrir la boîte de dialogue de lien sans éditeur présent?

Voici ce que je suis après

    
posée Benn 22.11.2015 - 13:57

1 réponse

6

Il n’existe pas de méthode éthique pour ce faire. Mais il existe toujours un moyen de le faire. WordPress a écrit le script wpLink en gardant à l'esprit que l'éditeur est là, mais que WordPress le gère quand l'éditeur n'est pas là (bonne chose)

Considérons cet exemple et supposons que nous l'utilisons en bas de page.

Mettez d'abord en file d'attente le style et les scripts essentiels.

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

Ajoutez maintenant cette fonction au pied de page Lire les commentaires en ligne

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

Remarque: Il ne fonctionnera pas si l'utilisateur n'est pas connecté à cause d'une erreur JS.    setUserSetting n'est pas défini et aucune réponse AJAX lorsque l'utilisateur ne   connecté.

    
réponse donnée Sumit 22.02.2016 - 19:35

Lire d'autres questions sur les étiquettes