web-dev-qa-db-fra.com

Est-il possible de définir par défaut pour "Insérer/Modifier le lien" sur "Ouvrir le lien dans une nouvelle fenêtre"?

Je sélectionne presque toujours "Ouvrir le lien dans une nouvelle fenêtre" lors de la création d'une URL/HREF. Est-il possible de faire ce choix par défaut?.

Même si cela nécessite un petit changement de code source, je pense que cela en vaudrait la peine (si quelqu'un peut me dire où cela se trouve)

1
NealWalters

Il semble que TinyMCE ne fournit pas de paramètre facile pour sélectionner une valeur par défaut. Mais il existe une autre porte dérobée: l’option external_link_list_url de TinyMCE peut pointer vers un fichier Javascript supplémentaire qui sera chargé dans la fenêtre de l’éditeur de liens. Vous pouvez l'utiliser pour créer une liste déroulante de destinations de liens fréquentes, mais comme il s'agit d'un fichier Javascript classique, nous pouvons également y déposer d'autres contenus. Comme un code qui modifiera la valeur sélectionnée de la liste déroulante de la liste cible si nous ne modifions pas un lien existant:

tinyMCEPopup.onInit.add( function() {
    if ( ! tinyMCEPopup.editor.dom.getParent( tinyMCEPopup.editor.selection.getNode(), 'A' ) ) {
        selectByValue( document.forms[0], 'target_list', '_blank' );
    }
} );

Vous pouvez créer un plugin WordPress pour cela, donc il survivra à WP mises à jour. Créez un nouveau répertoire sous wp-content/plugins/ (appelez-le comme vous voulez pour le retrouver plus tard). Créez un fichier PHP (également appelé ce que vous voulez), avec le contenu suivant. Vous pouvez changer le contenu du commentaire, cela va définir ce que vous voyez dans la zone d’administration des plugins .

<?php
/*
Plugin Name: WPSE 7785
Plugin URI: http://wordpress.stackexchange.com/questions/7785/is-there-any-way-to-set-default-for-insertedit-link-to-open-link-in-new-window--
Description: Is there any way to set default for "Insert/Edit Link" to "Open link in new window"?  
Version: 1.0
Author: Jan Fabry
*/
add_filter( 'tiny_mce_before_init', 'wpse7785_tiny_mce_before_init' );
function wpse7785_tiny_mce_before_init( $initArray )
{
    $initArray['external_link_list_url'] = plugins_url( 'wpse-7785.js', __FILE__ );
    return $initArray;
}

Créez également un fichier Javascript dans ce répertoire de plug-in, à côté du fichier PHP. Je l'ai appelé wpse-7785.js, vous pouvez choisir autre chose, mais veillez à mettre à jour le nom dans l'appel plugins_url() ci-dessus. Placez le contenu du premier bloc dans ce fichier Javascript.

Activez le plugin et allez dans votre éditeur. Lorsque vous accédez à l'éditeur de publication et cliquez sur le bouton "Modifier le lien", la valeur correcte doit être définie pour la liste déroulante "Cible".

6
Jan Fabry

J'ai suivi vos instructions et ne fonctionnais pas du tout, car wordpress a légèrement modifié l'identifiant du lien. Je me suis corrigé et j'ai créé un plugin.

<?php
/*

 Plugin Name: Default New Window Link Opener
 Plugin URI: https://github.com/eballo
 Description: Plugin for wordpress that allow you to enable the check in the popup "Insert/Edit Link” to open a link in new window by default
 Version: 1.0
 Author: eballo

This plugin is based on the solution made by Jan Fabry and lewayotte in wordpress stackexchange forum.

http://wordpress.stackexchange.com/questions/7785/is-there-any-way-to-set-default-for-insert-edit-link-to-open-link-in-new-wind

*/

/**
 * Sets "Open link in a new window/tab" to checked by default
 */
function wplink_tiny_mce_init()
{
 ?>
    <script type="text/javascript">
    jQuery(function () {
       jQuery('input#wp-link-target').prop('checked',true);
    });
</script>    
<?php
}

add_action( 'before_wp_tiny_mce', 'wplink_tiny_mce_init' );

?>

Si quelqu'un veut ma solution, c'est ici que ça marche: https://github.com/eballo/DefaultCheckedLink/

UPDATE: plug-in créé et publié: http://www.wordpress.org/plugins/default-new-window-link- ouvreur

3
eballo

Cela a fonctionné pour moi ...

/*
 * Sets "Open link in a new window/tab" to checked by default
 */
function ahu_after_wp_tiny_mce() {
    ?>
    <script type="text/javascript">
    jQuery( function() {
        jQuery( 'input#link-target-checkbox' ).prop( 'checked', true );
    } );
    </script>    
    <?php
}
add_action( 'after_wp_tiny_mce', 'ahu_after_wp_tiny_mce' );

Je l'ai collé dans un fichier PHP dans le répertoire wp-content/mu-plugins (que vous devez créer s'il n'existe pas).

2
lewayotte

Vous pouvez créer un filtre pour le hook edit_tag_link et attribuer le lien à votre goût. C'est l'un des nombreux crochets non documentés (ou sous-documentés) dans WP.

Je voudrais essayer quelque chose comme (avertissement: non testé):

function edit_tag_link_new_window($content) {
    $content = preg_replace('/href/', 'target="_blank" href', $content);
    return $content;
}
add_filter('edit_tag_link', 'edit_tag_link_new_window');
0
Peter Rowell

J'ai essayé l'idée du nom du plug-in: WPSE 7785 ci-dessus - le plug-in s'est installé avec succès, mais n'a pas modifié le paramètre par défaut pour "Ouvrir le lien dans une nouvelle fenêtre/un nouvel onglet" - ce qui, je crois, est l'intention de la demande initiale.

J'ai fait un peu plus de recherches/tests et j'ai constaté que le contrôle pour cela se trouve dans le fichier WordPress suivant: /wp-admin/includes/internal-linking.php

Autour de la ligne 85 est la suivante:

<input type="checkbox" id="link-target-checkbox" tabindex="30" /> <?php _e( 'Open link in a new window/tab' ); ?></label>

J'ai simplement ajouté "coché" à l'entrée:

<input type="checkbox" id="link-target-checkbox" checked tabindex="30" /> <?php _e( 'Open link in a new window/tab' ); ?></label>

L'inconvénient est que ce fichier est écrasé lors de la mise à jour de WordPress mais que, pour l'instant, j'ai un fichier "readme.txt" dans mon dossier WP pour référence future/rappel. Je suis sûr qu'il existe un moyen de créer un hook en dehors du dossier admin qui pourrait être utilisé pour contrôler cela et ne pas être affecté par les mises à jour, mais je ne suis pas encore à ce niveau de compétence WP.

0
Michael