Tips & Tricks
How to: Open external links in a new window
Over the weekend, I attended WordCamp Denver, and I was asked by John Hawkins how to force links to open in a new tab with out editing the source code. So, today lets learn a simple jQuery trick to open all external links in your site in a new tab or window. We are going to make sure you have jQuery active on your site, you can do this easily in WordPress, since it’s bundled with the latest installations. Use this code in your header: <?php wp_enqueue_script('jquery'); ?>
then, below the wp_head
add the following:
<script type="text/javacript"> var $j = jQuery.noConflict(); $j(document).ready(function() { //external attribute $j("a:not([@href*=http://YOURSITE.com/])").not("[href^=#]") .addClass("external") .attr({ target: "_blank" }); } ); </script>
That’s it, just make sure you change the http://YOURSITE.com to your website.
Update
If you like you can remove the var $j =
and replace all $j
with simply just $
Themes
Fixing plugins not compatible with hybrid 0.4.2
Hey everyone, as you may have noticed I have a running on the site. While everything almost everything moved over smoothly, there was an issue with how my parent theme striped text in typography. This caused some plugins, like cformsII to not be allowed to print to the screen. Justin had helped to find a fix to filter the hybrid_typography
function.
Originally this function filtered out and changed some text that would not validate as XHTML. This had to be removed by running a new function in the child theme’s function.php
file.
add_action('init', 'remove_typography'); function remove_typography() { remove_filter('the_content', 'hybrid_typography', 11); }
Plugins
Add the twittar plugin for WordPress w/ comment threading
I talked about the Twittar plugin in a previous post. But learned that the read me text file was only useful for installing the necessary php
code into WordPress themes that don’t have comment threading enabled.
Since most new themes past version 2.7, pull the comments section from functions.php
file, that is where you have to edit the avatars in order to show the twittar settings.
First open you functions.php
, and look for a line of code that says:
function custom_comment()
This is where your new comments are pulled from when you have the threaded comments enabled.
Now just find <?php echo get_avatar( $comment, $args['avatar_size'] ); ?>
& replace with <?php twittar(70, "", "", "avatar avatar-70 photo", 1, "R"); ?>
. Keep in mind that you will need to edit the Twittar setting to fit your site.
Tips & Tricks
Styling your ordered & unordered list items into 2 columns
In a previous post I showed you how to create a custom widget, then I showed you how to create a widget for your monthly archives, and limit the month’s that show. I am showing the past 4 months in my widget at this time.
One of my readers: Alex asked:
How did you make the archives widget to show the dates separately into two columns?
Now I will show you a CSS trick to create this effect:
First we will give the unordered list a width of 100%:
ul#archives { width:110%; }
Then we will style the <li>
nested inside.
ul#archives li { display:inline; float:left; width:120px; }
And that is it. Please make sure that you clear the float
after your closing </ul>
.
-
Tips & Tricks4 months ago
WordPress Security Hacks
-
Pages4 weeks ago
Write For Us – Guest Post
-
Showcase1 month ago
StylizedWeb.com
-
News3 weeks ago
How to: Show/Hide any div box with jQuery in WordPress
-
Tips & Tricks3 months ago
How to: show/hide a widget in WordPress with jQuery
-
Tips & Tricks5 months ago
Remove the title attribute using jQuery
-
Plugins2 months ago
Top Membership plugins
-
Tips & Tricks1 month ago
Limit the characters that display on the_title
Shawn Parker
March 1, 2009 at 5:53 pm
Good tip, thanks for picking this up after my blunder. A couple more things to note:
1. Instead of worrying about jQuery’s noConflict you can simply use jQuery(…) instead of $ – then everything you do is safe even if jQuery doesn’t get started in no conflict mode.
2. jQuery(document).ready(function() { can be replaced with just jQuery(function() {
3. To be xhtml future proof you can’t use target=”_blank” any more. Something like this would be more appropriate:
jQuery(function() {
jQuery(“a:not([@href*=http://YOURSITE.com/])”).not(“[href^=#]”)
.addClass(“external”)
.click(function(){
window.open(this.href); // pop a new window
return false; // return false to keep the actual link click from actuating
})
});
Frosty
March 1, 2009 at 6:38 pm
Thanks!
Pingback: Open Links in New Windows or Tabs Without Target=”Blank”
Elena Coen
May 8, 2009 at 5:24 am
Hi there,
Is there a hack for this that would allow links from a folder to open automatically in a new window? I have an RSS feed from another install I did in a folder. I want anything from there to open in a new window but because it starts with the same URL, such code recognizes it as a match and keeps it opening in the same window. So http://www.mysite.com/anything else would open in same window, any external URLS plus http://www.mysite.com/jobs I want to open in a new window.
Thank you, Elena
Austin
May 8, 2009 at 11:44 am
Hmmm.. This may be possible with some anchor not attributes in jQuery. Let me browse around and see what I can come up with..
Udegbunam Chukwudi
September 21, 2009 at 1:54 am
Wonderful tutorial. Would definitely come in handy for some folks. For me, when I link to old posts on my blog from a new post, I like them opening in a new window so the reader doesn’t get lost trying to find his/her way back to the start.
BTW is there a way of making this code force all links to open in a new window?
.-= Udegbunam Chukwudi´s last blog ..Top 10 Ways Nigerians Make Money Online =-.
Pingback: darrinb.com | opening external links in a new window using jquery