Come usare wpLink senza editor?


11

Vorrei creare un'opzione tema per aggiungere un collegamento. Il caricamento di questi script e l'attivazione della finestra di dialogo funzionano correttamente se è presente l'editor wp.

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

ma come si fa ad aprire la finestra di dialogo del collegamento senza che l'editor sia presente?

Questo è quello che sto cercando

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


2
È tutto strettamente legato all'editor, la finestra di dialogo di collegamento è costruita da un metodo della classe editor e lo script che lo richiama necessita di un'istanza dell'editor.
Milo,

cosa intendi senza l'editor? dove vuoi averlo?
Pmpr

@Trix nelle impostazioni del tema
Benn,

Stai meglio costruendo il tuo o usando qualcosa come il campo di relazione di Advanced Custom Field: advancedcustomfields.com/resources/relationship o il campo di relazione di Custom Field Suite: docs.customfieldsuite.com/field-types/relationship.html
MikeNGarrett

Risposte:


7

Non esiste un modo etico per farlo. Ma c'è ancora un modo per farlo. WordPress ha scritto lo script wpLink tenendo presente che l'editor è presente ma che WordPress gestisce quando l'editor non è presente (buona cosa)

Considera questo esempio e supponi che lo stiamo usando sul front-end nel piè di pagina.

Prima accoda lo stile e gli script essenziali.

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

Ora aggancia questa funzione nel piè di pagina Leggi i commenti in linea

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

Nota: non funzionerà quando l'utente non ha effettuato l'accesso a causa dell'errore js setUserSettingnon definito e nessuna risposta AJAX quando l'utente non ha effettuato l'accesso.


In qualche modo tutto questo prima funzionava senza il _WP_Editorscodice e si è rotto. La tua risposta ha salvato la giornata - grazie!
random_user_name
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.