blog.nayma.pl


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

Dariusz Nayma.pl
Autor Wpisu

Podziel się


Tagi


Zewnętrzne linki w nowym oknie w WordPress

Dariusz Nayma.plDariusz Nayma.pl

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\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",'');
}


add_filter( 'plugin_action_links', 'external_links_in_new_windows_plugin_action_links', 10, 2 );

<p style="text-align: center;">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.</p>

// otwieranie linkow zewnetrznych w nowym oknie
add_filter( 'the_content' , 'mh_add_blank' );


function mh_add_blank( $content ) {
$mh_url_regex = "/&lt;a\ href="(http|https)://[a-zA-Z0-9-. ] + [ a-zA-Z ]{2,3}.*"[ \ > ]/";
preg_match_all( $mh_url_regex , $content, $mh_matches );
for ( $mh_count = 0; $mh_count < count( $mh_matches [ 0 ] ); $mh_count++ ) { $mh_old_url = $mh_matches [ 0 ] [ $mh_count ] ; $mh_new_url = str_replace( '">' , '" target="_blank">' , $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=>$item) {
if (strpos($needle, $item ) !== false) return true;
}
return false;
}

Komentarze