[转]10个杀手级WordPress技巧

2008年是WordPress 迅速发展的一年,因此WordPress也升级了无数次,直到最近的2.7版本。很多的专注于WordPress的博客创建了起来,当然发现了大量的新技巧,这些技巧帮助很多的blogger提升了他们的博客功能。在此篇文章中我们将介绍10个新的适用的杀手级WordPress 技巧来发动你喜爱的blogging 引擎力量。每个技巧都会带有详尽的说明,因此让你不仅能发动WordPress的力量,同样能理解其工作原理。

1.只针对搜索引擎用户显示广告

10-killer-wordpress-hack1gif

问题. 总所周知,普通的用户并不会点击广告,90%的情况,点击广告的是来自搜索引擎的用户。

另外一个问题是Google智能的定价机制,成为智能定价意味着你的点击等级(CTR)非常低,你每此点击所得将减低两倍,甚至10倍,例如每次点击所得为1$,在智能定价下,你所得的只能是$0.10,很痛苦,是吗?高兴的是,这个只针对来自搜索引的用户显示广告的方法能带来更多的点击和更高的CTR。

解决方法

1.打开当前主题中的 funtion.php 文件。

2.粘贴以下代码到其中:

function scratch99_fromasearchengine(){
  $ref = $_SERVER['HTTP_REFERER'];
  $SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.');
  foreach ($SE as $source) {
    if (strpos($ref,$source)!==false) return true;
  }
  return false;
}

3.完成以上的步骤后,粘贴以下代码到你任何想显示广告的地方,他们将只会显示给从搜索引擎来的用户。

if (function_exists('scratch99_fromasearchengine')) {
  if (scratch99_fromasearchengine()) {
    INSERT YOUR CODE HERE // 这里插入你的广告代码
  }
}

代码解释. 这个技巧创建了一个名为scratch99_fromasearchengine()的函数,这个函数包含了一个 $SE 数组变量,从而使你可以自定义搜索引擎。你可以添加新的元素来轻易的添加新的搜索引擎到数组。

函数scratch99_fromasearchengine() 会自动转变为 true //是 如果用户是来自数组变量中的搜索引擎。

来源:

How to Display Ads Only to Search Visitors How to: Display AdSense to search engine visitors only

2.在循环中避免重复文章

10-killer-wordpress-hack2gif

原因. 由于最近流行的“杂志型”主题,有一个来自于,在首页使用了多个循环//Loop的WordPress 用户的需求是如何在第二个循环上避免重复文章。

解决方法. 这里有一个简单的解决此问题的方法,利用PHP的数组功能。

1.首先让我们创建一个简单的PHP数组,把所有的IDs放进第一个循环中。

<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() 来检测某个文章ID是否包含于$ids数组里,如果这个文章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并没有显示在第一个循环的引用数组。

来源:

How to: Use two (or more) loops without duplicate posts

3.使用页码代替“上一页”和“下一页”连接

10-killer-wordpress-hack3gif

问题. 默认情况下,WordPress 有一个显示到上一页和下一页连接的函数,这比没有强,但我不明白为什么WordPress不创建一个默认的页码。当然这里有一些插件来创建页码,但是为什么不直接把它插入到你的主题中呢?

解决方法. 为了达完成这个技巧,我们将需要使用 WP-PageNavi 插件,并且直接把他插入到你的主题当中。

1.首先要做的事,当然是,下载这个插件

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>

4.用以下的代码代替:

<?php
include('wp-pagenavi.php');
if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
?>

5.接下来我们必须修改这个插件的文件,这样做,打开 wp-pagenavi.php 文件,并找到下面的第61行。

function wp_pagenavi($before = '', $after = '') {
        global $wpdb, $wp_query;

我们必须请求这个 pagenavi_init() 函数,我们这么做:

function wp_pagenavi($before = '', $after = '') {
	global $wpdb, $wp_query;
        pagenavi_init(); //Calling the pagenavi_init() function

6.我们已经完成了大部分,最后一件要走的事情就是添加 wp-pagenavi 样式表带你的博客,打开header.php 文件,添加以下代码:

<link rel="stylesheet" href="<?php echo TEMPLATEPATH.'/pagenavi.css';?>" type="text/css" media="screen" />

代码解释.这个技巧只是简单的将插件包含包了主题文件夹中,我们同样添加了一个pagenavi_init()请求函数来确保页码适当的显示。

来源:

How to: Integrate pagination in your WordPress theme

4.自动提取文章中的图片

10-killer-wordpress-hack4

问题.使用自定义字段//custom fields 在文章中显示相关的图片当然是个好主意,但很多WordPress用户希望能有一个寻取插入文章内容自身中图片的方法。

解决方法. 我们知道,到目前为止没有一款插件具有此功能,高兴的是,下面的这个循环/loop 能完成这个任务,他能搜寻文章内容中的图片,并显示这些图片。

1.在你主题的任何位置粘贴以下代码:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>   <?php
$szPostContent = $post->post_content;
$szSearchPattern = '~<img [^>]* />~';   // Run preg_match_all to grab all the images and save the results in $aPics
preg_match_all( $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和常规的表达式来搜寻插入到文章内容中的图片,如果找到的话,他们将会被显示出来。

来源:

Manipulate images from WordPress post content with regular expressions How to: Retrieve images in post content

5.创建一个“发送到Twitter”的按钮

10-killer-wordpress-hack5png

问题. 你在使用Twitter?如果是,我们确信你知道这个服务对于和朋友分享你在网上找到的感兴趣的事情是多么的好,所以,为什么不给你的读者一个直接发送你的文章连接的机会呢?而且这样也能带来更多访问者。

解决方法. 这个技巧很容易完成,你唯一要做的事就是创建一个带有参数状态//status parameter 的连接给twitter,因为我们使用的WordPress 博客,我们能使用函数 the_permalink() 来获取页面的连接:

<a href="http://twitter.com/home?status=Currently reading <?php the_permalink(); ?>" title="Click to send this page to Twitter!" target="_blank">Share on Twitter</a>

很简单,不是吗?却很实用。

6.使用普通引用代替Curly//波浪? 引用

问题. 如果你是一个经常在网站上发布代码片段的开发人员,你可能遇到以下的问题:一个用户告诉你,你发布的代码无法正常显示,为什么?因为在默认情况下,WordPress将会转换普通引用为”smart quotes” ,从而破坏代码段。

解决方法.去掉这些curly 引用,步骤如下:

1.打开当前主题的 funtions.php 文件。

2.粘贴以下代码:

<?php remove_filter('the_content', 'wptexturize'); ?>

3.保存文件,然后你可以跟破坏的代码段说再见了。

代码解释. wptexturize()函数将自动转换普通引用为smart quotes ,使用the remove_filter() 函数后,我们告诉WordPress 我们不需要在文章内容中使用此函数。

来源:

How to get rid of curly quotes in your WordPress blog

7.拒绝非提交者请求的评论

问题. 垃圾评论对每个blogger都是一个很大的问题,当然Akismet能帮助你阻止垃圾评论,但能不能更彻底一点的防止垃圾评论呢?下面的代码将会在wp-comments-post.php文件被访问时寻找访问者(请求页面的URL),如果访问者存在,并且是你的博客地址的URL的话,评论被允许,否则的话,会停止载入,评论也将无法发表。

解决方法. 实现这个技巧,只需要在你当前主题的 functions.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');

来源:

How to: Deny comment posting to no referrer requests

8.在WordPress 导航上使用滑动门

10-killer-wordpress-hack6

问题. wp_list_pages() 和 wp_list_categories() 函数能允许很多事情,但他们却不允许你插入<span>元素来使用著名的 CSS 滑动门技术,高兴的是,在PHP和一些常规表达式的帮助下,我们可以在WordPress 博客上使用这个了不起的技术。

因为大量的CSS 滑动门技术,我们在这里将不会介绍它是如何工作的,建议阅读this excellent article如果你想了解更多关于这个技术的知识。点击这里来预览这个例子的效果。

1.创建你所需的图片,并且编辑你WordPress 主题的style.css 文件,这个有了例子:

#nav a, #nav a:visited {
  display:block;
}
#nav a:hover, #nav a:active {
  background:url(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: url(images/tab-left.jpg) no-repeat 0 1px;
}

2.接下来编辑 header.php 文件,根据你的需要复制下面其中的一段代码:

列出你的页面

<ul id="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')); ?>
</ul>

列出你的分类

<ul id="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')); ?>
</ul>

代码解释 在这个例子中我们使用 wp_list_pages() 和 wp_list_categories()汉中中的 echo=0 变量,从而让你得到这个函数的结果,而不是直接显示出来,是被PHP 函数 preg_replace() 所用,最后在 <li> 和 <a> 中间添加 <span> 函数。

来源:

CSS Techniques: Using Sliding Doors with WordPress Navigation

9.在你的WordPress 博客上显示随机头部图片

问题. 着并算不上是一个问题,但是很多WordPress 用户喜欢给他们的读者显示一个随机的头部图片。

解决方法.

1.首先,选择一些图片作为你博客头部的图片,命名为1.jpg,2.jpg,3.jpg 等,你可以使用你喜欢的许多图片。

2.上传这些图片到你当前主题的images文件夹里。

3.打开 header.php 插入以下代码到里面:

$num = rand(1,10); //Get a random number between 1 and 10, assuming 10 is the total number of header images you have
&ltdiv id="header" style="background:transparent url(images/.jpg) no-repeat top left;">

4.完成,你博客的每个页面或是文章的头部现在将会显示一张随机的图片。

代码解释. 一点都不难,我们只是简单的使用PHP 函数 rand() 初始化了一个变量 $num ,从而在1和10之间获取一个随机数字,然后我们连接 变量 $num 的数字 到我们使用的主题的路径。

来源:

How to: Display a random header image

10.列出你的预定文章

10-likker-wordpress-hack10

问题. 和很多Blogger 一样,你也许希望你的读者能更频繁的访问你的博客,或是订阅你的 RSS feed ,一个使他们对你以后的文章好奇的方法就是列出你预定文章的标题。

解决方法. 打开你当前主题的任何文件,并粘贴以下代码:

<?php
$my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
if ($my_query->have_posts()) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <li><?php the_title(); ?></li>
    <?php endwhile;
}
?>

代码解释. 在着段代码中,我们使用了WP_Query class 来创建了一个自定义的WordPress 查询//query ,向数据库发送了一条查询,来获取五条最近的预定文章列表,完成以后我们使用一条简单的WordPress 循环来显示它。

来源:

How to: List scheduled posts Den Leser in die Zukunft blicken lassen

文章来源:10 Killer WordPress Hacks

中文翻译:10个杀手级WordPress技巧

【转自】10个杀手级WordPress技巧 – 译言翻译

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据