wordpress高级教程

ė 5,183 6 0

2008 年对WordPress 来说是非同寻常的一年,它的软件多次更新,最终促成重大版本2.7 的发布,
许多网站因此也开始使用WordPress 软件。一些用户在使用过程中对WordPress 的代码等作了许多
改进,更多WordPress 用户也因此受益。
这篇文章将向大家介绍10 个最新最实用的WordPress hack,它能让你的博客引擎开足马力,挣脱束
缚,最大限度地为你服务。此外,每个hack 还都附有相关说明,这样你不仅能让WordPress 释放最
大力量,还能知道如何操作。
1.只在搜索引擎结果中显示AdSense 广告
问题:众所周知,一般访问并不点击广告。广告点击率90%是来自搜索引擎的显示结果。另一个问
题是Google 的智能计价。智能定价意味着CTR 比较低,点击率单价大打折扣。例如,如果一次点
击正常获得1 美元的话,Google 的智能计价只会是0.1 美元。郁闷吧?但是,以下的代码改进就能
解决这个问题了。它只在搜索引擎结果中显示AdSense 广告,这意味着你能得到更多的点击率,更
高的CTR.
解决方案:
1. 打开主题中的functions.php 文件。
2. 粘贴进下代码:
function scratch99_fromasearchengine(){
$ref = $_SERVER['HTTP_REFERER'];
$SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'de.icio.us/search',
'soso.com', '/search/', '.yahoo.');
foreach ($SE as $source) {
if (strpos($ref,$source)!==false) return true;
}
return false;
}
3. 把以下代码粘贴到AdSense 广告显示位置的相应模板中。它只会在搜索引擎结果中显示:
if (function_exists('scratch99_fromasearchengine')) {
if (scratch99_fromasearchengine()) {
INSERT YOUR CODE HERE
}
}

代码说明:这个改进以scratch99_fromasearchengine()函数开头,包括了用来指定搜索引擎的$SE
数组变量。这样,只要把新元素加入到数组中就能轻松添加新的搜索引擎。如果使用搜索引擎搜索的
访客包含了$SE 数组变量,scratch99_fromasearchengine()接着就会返回true 值。
2.避免在多循环中出现重复文章
问题:由于“杂志型”主题的流行,现在很多WordPressy 用户在他们的首页上都使用了多个循环,因
此他们也迫切需要在第二个循环上避免出现重复文章。
解决方案:使用PHP 数组就能轻松解决这一问题
1. 创建一个PHP 数组,并把第一个循环的所有文章ID 放在其中
<h2>Loop n°1</h2>
<?php
$ids = array();
while (have_posts()) : the_post();
the_title();
?>
<br />
<?php $ids[]= $post->ID;
endwhile; ?>
2. 对于第二个循环:使用PHP 函数in_array()来检查$ids 数组中是否包含了某个文章ID。如果
这个文章ID 没有包含在此数组中,意味着第一个循环中没有此篇文章,那么系统就可以显
示它了。
<h2>Loop n°2</h2>
<?php
query_posts("showposts=50");
while (have_posts()) : the_post();
if (!in_array($post->ID, $ids)) {
the_title();?>
<br />
<?php }
endwhile; ?>
代码说明:执行第一个循环时,其中的所有文章ID 都会被放到一个数组变量中。因此,第二个循环
执行时,我们只要到这个数组中检查当前的文章ID 是否已显示在第一个循环中就可以了。

3.用页码代替“上页”和“下页”
问题:WordPress 有默认函数来显示上页和下页页面,虽然这比没有这个什么功能好,但是我不明白
开发人员为什么不把页面写进核心代码呢。当然,我们可以用插件来生成页码,但是如果能把页码直
接插入主题岂不更好?!
解决方案:这里使用WP-PageNavi 插件把页码直接写入主题
1. 首先下载WP-PageNavi 插件
2. 在硬盘驱动上解压插件存档,并把wp-pagenavi.php 和 wp-pagenavi.css 文件上传到主题
目录
3. 打开要放置页码的文件(如index.php, categories.php, search.php,等),找到以下代码:
<div class="navigation">
<div class="alignleft"><?php next_posts_link('Previous entries') ?></div>
<div class="alignright"><?php previous_posts_link('Next entries') ?></div>
</div>
用以下代码代替以上内容:
<?php
include('wp-pagenavi.php');
if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
?>
4. 接着请修改插件文件。打开wp-pagenavi.php 文件并找到以下代码(61 行):
function wp_pagenavi($before = '', $after = '') {
globa$wpdb, $wp_query;
修改成:
function wp_pagenavi($before = '', $after = '') {
globa$wpdb, $wp_query;
pagenavi_init(); //Calling the pagenavi_init() function
5. 最后,我们要把wp-pagenavi 样式表添加到博客。
打开header.php 文件,把以下代码添加进去:
<linkre="stylesheet"href="<?phpechoTEMPLATEPATH.'/pagenavi.css';?>"type="text/css"
media="screen"/>
代码说明:这个代码改进直接在主题文件中加入添加了插件代码。我们另外还调用了pagenavi_init()
函数以使页码能够正常显示。

4.自动获取文章图像
问题:使用自定义字段来显示和日志相关的图像固然很好,但是许多用户想直接检索并使用文章本身
嵌入的图像。
解决方案: 至今为止,还没有这样的插件。值得庆幸的是,以下循环将帮我们解决这一问题:它会
搜索文章内容的图像并把它们显示出来
1. 把以下代码粘贴到主题文件任意位置:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$szPostContent = $post->post_content;
$szSearchPattern = '~<img [^\>]*\ />~';
// Run preg_match_alto grab althe images and save the results in $aPics
preg_match_al( $szSearchPattern, $szPostContent, $aPics );
// Check to see if we have at least 1 image
$iNumberOfPics = count($aPics[0]);
if ( $iNumberOfPics > 0 ) {
// Now here you would do whatever you need to do with the images
// For this example the images are just displayed
for ( $i=0; $i < $iNumberOfPics ; $i++ ) {
echo $aPics[0][$i];
};
};
endwhile;
endif;?>
代码说明:以上代码实际上包含了一个WordPress 循环。使用PHP 和正则表达式的唯一区别就是前
者会自动搜索文章内容中的图像而不是仅仅显示文章。一旦发现图像,系统就会显示。
5.创建“发送到Twitter”按钮
问题:你是Twitter 用户吗?如果是,相信你一定了解和朋友在线分享有趣内容的乐趣。那么,为什
么不给你的读者也提供一个机会,让他们可以直接把你的文章UR发送到Twitter 以给你带来更多流
量呢?
解决方案:这个代码改进非常简单。只要创建一个带有status 参数的Twitter 链接就可以了。而对于
WordPress,直接使用the_permalink()函数就可获取文章UR了:

<a href="http://twitter.com/home?status=Currentlyreading<?php the_permalink(); ?>"
title="ClicktosendthispagetoTwitter!" target="_blank">ShareonTwitter</a>
非常简单,对吧?但它同时也非常实用!
6. 使用直引号,避免弯引号
问题:如果你经常在自己的网站上发布代码片段的话,可能会经常碰上这类问题:某用户会说你发布
的代码不起作用。这是为什么呢?WordPress 默认情况下会将直引号转为“smart 引号,”而后者会截
断代码片段。
解决方案:要避免出现这些弯引号,请按以下操作:
1. 打开主题中的functions.php 文件。如果不存在该文件的话,请自行创建一个。
2. 粘贴进如下代码:
<?php remove_filter('the_content', 'wptexturize'); ?>
3. 保存文件。大功告成!
代码说明:wptexturize()函数会自动将直引号转为smart 引号。而通过使用remove_filter()函数,我
们会告知WordPress 不要对日志内容使用wptexturize()函数,问题自然得到解决。
7. 如无Referrer 请求则禁止发表评论
问题:垃圾评论是让所有博主都头疼的问题。尽管Akismet 能够帮你应付这些问题,但如果能化被动
为主动岂不是更好?以下给出的代码在wp-comments-post.php 被访问时,会查找referrer(即UR来源页面)。如果此时存在一个referrer,且为你博客的UR,那么就可以发表评论。反之,页面将
会停止载入,而评论也就无法发表了。
解决方案:要应用此hack 的话,直接将以下代码粘贴到外观主题的function.php 文件中即可。如果
外观主题不含此文件,请自行创建一个。
function check_referrer() {
if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] == “”) {
wp_die( __('Please enable referrers in your browser, or, if you\'re a spammer, bugger off!') );
}
}
add_action('check_comment_flood', 'check_referrer');

---
8.在WordPess 导航条中使用CSS 滑动门
问题:虽然内置的wp_list_pages()和wp_list_categories()函数很有用,但它们不允许嵌入<span>元
素。这样一来,就只能使用目前最赞的CSS 滑动门技术了。而且幸运的是,我们只要稍微借助一下
PHP 和正则表达式就能够在WordPress 博客中使用超酷的滑动门技术了。
由于有关CSS 滑动门的教程已经很多了,因此在这里我们就不对其工作方式再做任何说明。如果你
想对此技术进行更深入的了解,可以看看这篇精品文章。想看看实际效果的话,请点击这里。
1. 创建你所需的图片,并对WordPress 外观主题中的style.css 文件进行编辑。这里给出例子:
#nav a, #nav a:visited {
display:block;
}
#nav a:hover, #nav a:active {
background:ur(images/tab-right.jpg) no-repeat 100% 1px;
float:left;
}
#nav a span {
float:left;
display:block;
}
#nav a:hover span {
float:left;
display:block;
background: ur(images/tab-left.jpg) no-repeat 0 1px;
}
2. 现在让我们来编辑header.php 文件吧。根据自身需要将如下代码复制粘贴进去即可:
<uid="nav">
<li><a href="<?php echo get_option('home'); ?>/"><span>Home</span></a></li>
<?php echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i',
'<li$1><a$2><span>$3</span></a>',
wp_list_pages('echo=0&orderby=name&exlude=181&title_li=&depth=1')); ?>
</u>
列出页面:
<uid="nav">
<li><a href="<?php echo get_option('home'); ?>/"><span>Home</span></a></li>
<?php echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i',
'<li$1><a$2><span>$3</span></a>',
wp_list_categories('echo=0&orderby=name&exlude=181&title_li=&depth=1')); ?>
</u>
代码说明:此例中,我们在 wp_list_pages()和wp_list_categories()函数中使用了echo=0 参量,它
允许你获取函数结果而无需将其直接打印在屏幕上。接着函数结果将用于PHP preg_replace()函数,
并最终显示出来,此时<li>和<a>标签之间已加入了<span>标签。
9. WordPress 博客百变头图
问题:确切地说这并不是什么问题,但有不少WordPress 用户希望自己的博客头图能够丰富多变。
解决方案:
1. 当你相中了一些头图图片后,将它们命名为1.jpg, 2.jpg, 3.jpg,诸如此类。当然,你可以使
用任意多的图片。
2. 将图片上传到wp-content/themes/yourtheme/images 目录下。
3. 打开header.php 文件,并将如下代码粘入:
$num = rand(1,10); //Get a random number between 1 and 10, assuming 10 is the totanumber of header images you have
&ltdiv id="header" style="background:transparent ur(images/.jpg) no-repeat top left;">
4. 完成!现在博客各页面或日 志页面将会显示随机的头图了。
代码说明:这里没什么好说的。我们直接使用PHP rand()函数初始化一个$num 变量来随机获取1 到
10 之间的数字。接着我们将$num 变量的结果连上当前外观主题的路径就OK 了。
10.显示撰写计划
问题:许多博主都希望自己拥有更多的读者,有更多的RSS feed。而把文章撰写计划罗列出来显然
能提高访客的好奇心和兴趣。
解决方案:打开任意一个主题文件并粘贴进以下代码:
<?php
$my_query=newWP_Query('post_status=future&order=DESC&showposts=5');
if($my_query->have_posts()){
while($my_query->have_posts()):$my_query->the_post();?>
<li><?phpthe_title();?></li>
<?phpendwhile;
}
?>

代码说明:在这个代码改进中,我们使用WP_Query 类创建了自定义语句以发送数据库查询并提取
最近将要撰写的五篇文章。完成后,系统就会使用一个简洁的WordPress 循环来显示文章标题。
侧边加入登陆界面:
<li> <?php globa$user_ID, $user_identity, $user_leve?>
<?php if ( $user_ID ) : ?>
<h2>控制面板</h2>
<u>
<li>已登录 <strong><?php echo $user_identity ?></strong>.
<u>
<li><a href="<?php bloginfo('ur') ?>/wordpress/wp-admin/">后台</a></li>
<?php if ( $user_leve>= 1 ) : ?>
<li><a href="<?php bloginfo('ur') ?>/wordpress/wp-admin/post-new.php">撰写文章</a></li>
<?php endif // $user_leve>= 1 ?>
<li><a href="<?php bloginfo('ur') ?>/wordpress/wp-admin/profile.php">个人资料</a></li>
<li><a href="<?php echo wp_logout_ur() ?>">注销</a></li>
</u>
</li></u>
<?php elseif ( get_option('users_can_register') ) : ?>
<h2>登录</h2>
<u>
<li>
<form action="<?php bloginfo('ur') ?>/wordpress/wp-login.php" method="post">
<p>
<labefor="log"><input type="text" name="log" id="log" value="<?php echo
wp_specialchars(stripslashes($user_login), 1) ?>" size="22" /> 用户</labe><br />
<labefor="pwd"><input type="password" name="pwd" id="pwd" size="22"
/>密码</labe><br />
<input type="submit" name="submit" value="Send" class="button" />
<labefor="rememberme"><input name="rememberme" id="rememberme"
type="checkbox" checked="checked" value="forever" /> 记住我</labe><br />
</p>
<input type="hidden" name="redirect_to" value="<?php echo
$_SERVER['REQUEST_URI']; ?>"/>
</form>
</li>
<li><a href="<?php bloginfo('ur') ?>/wordpress/wp-register.php">注册</a></li>
<li><a href="<?php
bloginfo('ur') ?>/wordpress/wp-login.php?action=lostpassword">找回密码</a></li>
</u>
获取单篇文章内的关键字及描述方法:
<?php if(is_single()){
$keywords = " ";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ",";
}
if (have_posts()) : while (have_posts()) : the_post();
if(strlen($text) > 150) {
$text = substr($text,0,150);
$text= mb_convert_encoding($text,"UTF-8");
$text=preg_replace("/(\s+)/","",$text);
}
}
if ($post->post_excerpt){
$text = mb_substr(strip_tags($post->post_excerpt),0,150);
} else {
$text = mb_substr(strip_tags($post->post_content),0,150);
}?>
<meta name="keyword" content="<?php echo $keywords; ?>"/>
<meta name="description" content="<?php echo $text; ?>"/>
<?php } else { ?>
<meta name="keyword" content="草根评论,时事经济,网络热点,IT 视点,最新软
件,网站SEO,心情故事"/>
<meta name="description" content="<?php bloginfo('description'); ?>"/>
<?php } ?>

来源-小民 - 通过投稿渠道发表
  • 灵魂发问:谁告诉你我国防空洞位置了吗?怕是99%中国人不知道,我也不知道,为什么,因为没告诉咱们啊!怕是很多当官的都不晓得吧!所以别老想着打这个那个,真打起来,你躲都不知道躲哪?最好的位置是到没有军事区,机场等落后位置,因为人家炸这些位置不仅没有利益还会被国际谴责。 --- 2025/03/08
主机推荐
留言区 (5,183阅嗐!还没有留言,我要占位
:网友留言区仅供网友表达其个人观点,并不表明栖息邦最终立场。



管理员登录
注册

提示:点击上下面区域关闭

字号调整

View My Stats
空位 空位
本次加载耗时:1.318s