blog.nayma.pl


Dla miłośników WordPress, WooCommerce, HTML5, CSS3 oraz JS.

Podziel się


Tagi


Zewnętrzne linki w nowym oknie w WordPress

Jeśli kiedykolwiek mieliście problem bo zewnętrzne linki otwierają się wam w tym samym oknie a zmiana wszystkiego zajęłaby wieki można skorzystać z gotowej funkcji którą wystarczy dodać do functions.php szablonu potomnego Child Theme. Możemy również zainstalować wtyczkę Open external links in a new window którą możemy pobrać tutaj: https://pl.wordpress.org/plugins/open-external-links-in-a-new-window/

// otwieranie linkow zewnetrznych w nowym oknie
load_plugin_textdomain('open-external-links-in-a-new-window', false, basename( dirname( __FILE__ ) ) );  
add_action('wp_head', 'external_links_in_new_windows_client');

function external_links_in_new_windows_client()  
{
echo "\n\n<!-- ".__("Plugin: Open external links a new window.","open-external-links-in-a-new-window"). " ". __("Plugin by","open-external-links-in-a-new-window"). " Kristian Risager Larsen, http://kristianrisagerlarsen.dk . ".__("Download it at","open-external-links-in-a-new-window")." http://wordpress.org/extend/plugins/open-external-links-in-a-new-window/ -->\n";  
$blogdomain = parse_url(get_option('home'));
echo "<script type=\"text/javascript\">//<![CDATA[";  
  echo "
    function external_links_in_new_windows_loop() {
        if (!document.links) {
            document.links = document.getElementsByTagName('a');
        }
        var change_link = false;
        var force = '".get_option("external_links_in_new_windows_force")."';
        var ignore = '".get_option("external_links_in_new_windows_ignore")."';

        for (var t=0; t<document.links.length; t++) { var all_links = document.links[t]; change_link = false; if(document.links[t].hasAttribute('onClick') == false) { if(all_links.href.search(/^http/) != -1 && all_links.href.search('".$blogdomain['host']."') == -1) { change_link = true; } if(force != '' && all_links.href.search(force) != -1) { change_link = true; } if(ignore != '' && all_links.href.search(ignore) != -1) { change_link = false; } if(change_link == true) { document.links[t].setAttribute('onClick', 'javascript:window.open(\\''+all_links.href+'\\'); return false;'); document.links[t].removeAttribute('target'); } } } } function external_links_in_new_windows_load(func) { var oldonload = window.onload; if (typeof window.onload != 'function'){ window.onload = func; } else { window.onload = function(){ oldonload(); func(); } } } external_links_in_new_windows_load(external_links_in_new_windows_loop); "; echo "//]]></script>\n\n";
}
register_activation_hook(__FILE__,'external_links_in_new_windows_activate');function external_links_in_new_windows_activate() {  
update_option("external_links_in_new_windows_force",'');  
update_option("external_links_in_new_windows_ignore",'');  
}</p>
add_filter( 'plugin_action_links', 'external_links_in_new_windows_plugin_action_links', 10, 2 );  

Lub możemy skorzystac z drugiego kodu prostszego, ale czasami nie działa jak należy. Dlatego zalecamy skorzystać z wtyczki lub powyższego kodu.

// otwieranie linkow zewnetrznych w nowym oknie
add_filter( 'the_content' , 'mh_add_blank' );</p>  
function mh_add_blank( $content ) {  
$mh_url_regex = "/\&lt;a\ href\=\"(http|https)\:\/\/[a-zA-Z0-9\-\. ] + [ a-zA-Z ]{2,3}.*\"[ \ &gt; ]/";
preg_match_all( $mh_url_regex , $content, $mh_matches );  
for ( $mh_count = 0; $mh_count &lt; count( $mh_matches [ 0 ] ); $mh_count++ ) { $mh_old_url = $mh_matches [ 0 ] [ $mh_count ] ; $mh_new_url = str_replace( '"&gt;' , '" target="_blank"&gt;' , $mh_matches [ 0 ] [ $mh_count ] );  
$mh_ignore = array(
home_url( '/' ),  
'wordpress.org/'  
);
if( !mh_array_find( $mh_old_url , $mh_ignore ) )  
$content = str_replace( $mh_old_url , $mh_new_url , $content );
}
return $content;  
}
function mh_array_find( $needle , $haystack ) {  
if(!is_array($haystack)) return false;  
foreach ($haystack as $key=&gt;$item) {  
if (strpos($needle, $item ) !== false) return true;  
}
return false;  
}
Nayma.pl Dariusz Okoń
Dodane przez

Nayma.pl Dariusz Okoń

Komentarze