¿Hay alguna forma de establecer de forma predeterminada "Insertar/Editar enlace" en "Abrir enlace en una ventana nueva"?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/7785

  •  16-10-2019
  •  | 
  •  

Pregunta

Casi siempre selecciono "Abrir enlace en una ventana nueva" al crear una URL/HREF.¿Hay alguna forma de predeterminar esta elección?

Incluso si requiere un pequeño cambio en el código fuente, creo que valdría la pena (si alguien puede decirme dónde podría estar).

¿Fue útil?

Solución

Parece que TinyMCE no proporciona una configuración sencilla para seleccionar un valor predeterminado.Pero hay otra puerta trasera:el external_link_list_url La opción de TinyMCE puede apuntar a un archivo Javascript adicional que se cargará en la ventana del editor de enlaces.Puede usarlo para completar un menú desplegable de destinos de enlaces frecuentes, pero como es un archivo Javascript normal, también podemos colocar otro contenido en él.Código similar que cambiará el valor seleccionado del menú desplegable de la lista de objetivos si no estamos editando un enlace existente:

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

Puede crear un complemento de WordPress para esto, de modo que sobreviva a las actualizaciones de WP.Cree un nuevo directorio en wp-content/plugins/ (llámalo como quieras, para poder encontrarlo más tarde).Crea un archivo PHP en él (también llamado como quieras), con el siguiente contenido.Puedes cambiar el contenido del comentario, esto definirá lo que ves en el Complementos área de administración.

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

Ahora también cree un archivo Javascript en ese directorio de complementos, al lado del archivo PHP.lo llamé wpse-7785.js, puedes elegir otra cosa, pero asegúrate de actualizar el nombre en el plugins_url() llame arriba.Coloque el contenido del primer bloque en ese archivo Javascript.

Activa el complemento y ve a tu editor.Cuando vas al editor de publicaciones y haces clic en el botón "Editar enlace", se debe establecer el valor correcto para el menú desplegable "Destino".

Otros consejos

Seguí tus instrucciones y no funcionó en absoluto, porque WordPress cambió un poco la identificación del enlace.Me arreglé y creé un complemento.

<?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 alguien quiere mi solución, está aquí funcionando: https://github.com/eballo/DefaultCheckedLink/

ACTUALIZAR:Complemento creado y publicado: http://www.wordpress.org/plugins/default-new-window-link-opener

Esto funcionó para mí...

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

Guardé esto en un archivo PHP en el directorio wp-content/mu-plugins (que debes crear si no existe).

Puedes crear un filtro para el gancho. edit_tag_link y munge el enlace al gusto.Este es uno de una gran cantidad de ganchos no documentados (o poco documentados) en WP.

Intentaría algo como (advertencia:no probado):

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

Probé el nombre del complemento:Idea anterior de WPSE 7785: el complemento se instaló correctamente pero no cambió la configuración predeterminada para "Abrir enlace en una nueva ventana/pestaña", que creo que es la intención de la solicitud original.

Hice un poco más de búsqueda/prueba y descubrí que el control para esto está en realidad en el siguiente archivo de WordPress:/wp-admin/incluye/enlace-interno.php

Alrededor de la línea 85 se encuentra la siguiente:

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

Simplemente agregué "marcado" a la entrada:

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

El inconveniente es que este archivo se sobrescribe cuando se actualiza WordPress, pero por ahora tengo un archivo "readme.txt" en mi carpeta de WP para referencia/recordatorio en el futuro.Estoy seguro de que hay una manera de crear un enlace fuera de la carpeta de administración que podría usarse para controlar esto y no verse afectado por las actualizaciones, pero todavía no tengo ese nivel de habilidad en WP.

Licenciado bajo: CC-BY-SA con atribución
scroll top