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 être présent?
C'est ce que je suis après
Il n'y a pas de moyen éthique de le 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 continue de le gérer quand l’éditeur n’est pas là (bonne chose)
Considérez cet exemple et supposez que nous l’utilisons sur front-end en pied de page.
Commencez par mettre 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');
Maintenant, accrochez cette fonction au pied de page Lisez 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: Cela ne fonctionnera pas si l'utilisateur n'est pas connecté en raison de l'erreur js
setUserSetting
n'est pas défini et aucune réponse AJAX lorsque l'utilisateur n'est pas connecté.