WordPress整站鏈接新窗口打開模式下指定鏈接本窗口打開
編輯:狂族晨曦 來源:WordPress技巧 日期:2016-03-22 閱讀: 2,233 次 搶個沙發 百度已收錄
先森曾轉載過一篇鳥叔轉載的文章,這篇文章的內容是分別將WordPress后臺、訪客評論鏈接、友情鏈接設置為在新窗口打開,和一個大招,非常簡單的代碼讓網站上所有鏈接都在新窗口打開。有興趣的可以去看看:
本文主要講的是,如何在上文中所說的大招情況下,讓部分鏈接能夠在本窗口打開。這個大招非常霸道,但是設置起來卻非常簡單,上文中的描述都很少:

設置全站鏈接在新窗口打開
其中的重點,也就是加入紅框內的代碼。其實就是將所有鏈接的打開方式target設置成了_blank,這個屬性,我們在單獨設置鏈接的時候也時常用到。
這樣設置的好處是,你不用再一個一個的給鏈接添加該屬性,訪客也不容易直接跳出你的網站。但是缺點也是顯而易見,訪客在訪問你的網站時,每點擊一個鏈接都會新開一個窗口,要是窗口打開多了,會讓人感到厭煩。
所以先森這次想要實現的目標是,自己設置一些鏈接,能夠讓其不受<base target="_blank">的影響。
不是所有的鏈接都需要設置新窗口打開,本次先森就拿文章列表歸檔頁的頁碼下手。
解決問題
首先,先森從百度了解到,在設置了<base target="_blank">之后,單獨給鏈接設置target="_self"之后,鏈接就會變成本窗口打開。
這樣當然簡單,但是本次先森還要將其用到歸檔頁的頁碼中,沒想到還遇到一點問題。
關于歸檔頁的頁碼,先森用的是倡萌提供的代碼。需要的可以參考下:
其中核心的代碼就是在functions.php中添加以下代碼,然后調用即可:
function par_pagenavi($range = 9){
global $paged, $wp_query;
if ( !$max_page ) {$max_page = $wp_query->max_num_pages;}
if($max_page > 1){if(!$paged){$paged = 1;}
if($paged != 1){echo " 返回首頁 ";}
previous_posts_link(' 上一頁 ');
if($max_page > $range){
if($paged < $range){for($i = 1; $i <= ($range + 1); $i++){echo "$i";}}
elseif($paged >= ($max_page - ceil(($range/2)))){
for($i = $max_page - $range; $i <= $max_page; $i++){echo "$i";}}
elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){echo "$i";}}}
else{for($i = 1; $i <= $max_page; $i++){echo "$i";}}
next_posts_link(' 下一頁 ');
if($paged != $max_page){echo " 最后一頁 ";}}
根據鏈接打開方式的規則,可以很簡單的完成代碼的改造。上面輸出了很多種的a標簽,我們只需要在里面加入target=_self即可。但是,這些都很好解決,上面的代碼中還有兩個不同的代碼,它們是自動輸出a標簽,不需要再次添加:
previous_posts_link(' 上一頁 ');
next_posts_link(' 下一頁 ');
就是“上一頁”和“下一頁”這兩個代碼。這是WordPress自帶的函數,括號里的是要顯示的文本,而整個輸出,則直接是一個a標簽。關于用法,大家自行百度。
那么問題就來了,這樣先森就不能直接在a標簽中加本窗口打開的代碼了呀。
百度后了解到,還有另外兩個函數:
get_previous_posts_link(); get_next_posts_link();
這兩個函數的用法和去掉“get_”的用法一樣,但是不會直接輸出,在前面加輸出“echo”后就和不加“get_”的完全一樣了。
先森沒有找到能夠直接獲取a標簽中上一頁與下一頁鏈接的方法,只知道上面兩個函數。沒辦法,曲線救國,先森想到了替換。
PHP替換函數,先森曾經介紹過:
-
替換函數:PHP str_replace() 函數
點擊可以學習函數的用法,這里先森就不累述了。直接貼出最終的代碼;
//文章分頁代碼
function par_pagenavi($range = 9){
global $paged, $wp_query;
if ( !$max_page ) {$max_page = $wp_query->max_num_pages;}
if($max_page > 1){if(!$paged){$paged = 1;}
if($paged != 1){echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='跳轉到第一頁' target=_self> 首頁 </a>";}
$previous_posts= get_previous_posts_link(' 上一頁 ');
$tihuan_i=1;
echo str_replace(">"," title='跳轉到上一頁' target=_self>",$previous_posts,$tihuan_i);
if($max_page > $range){
if($paged < $range){for($i = 1; $i <= ($range + 1); $i++){echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged)echo " class='current'";echo " target=_self>$i</a>";}}
elseif($paged >= ($max_page - ceil(($range/2)))){
for($i = $max_page - $range; $i <= $max_page; $i++){echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged)echo " class='current'";echo " target=_self>$i</a>";}}
elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){echo "<a href='" . get_pagenum_link($i) ."'";if($i==$paged) echo " class='current'";echo " target=_self>$i</a>";}}}
else{for($i = 1; $i <= $max_page; $i++){echo "<a href='" . get_pagenum_link($i) ."'";
if($i==$paged)echo " class='current'";echo " target=_self>$i</a>";}}
$next_posts= get_next_posts_link(' 下一頁 ');
echo str_replace(">"," title='跳轉到下一頁' target=_self>",$next_posts,$tihuan_i);
if($paged != $max_page){echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='跳轉到最后一頁' target=_self> 最后一頁 </a>";}}
else {echo '<a href="javascript:;">共1頁</a>';}
}
修改代碼->保存->檢查->OK:

代碼生效
先森目前發現需要本窗口打開的鏈接還僅僅是頁碼,以后也許會陸陸續續的修改很多,這里也就不再多說了。
轉載請注明出處來自http://www.cnidcc.cn/wp_zzljxckdkmsxzdljbckdk.html

川公網安備 51011202000104號