接触WordPress也有几个月的时间了,现在把各方面收集到的WordPress技巧进行筛选,留下来以便各位网友学习交流。
1.高亮作者评论
1.首先编辑style.css,添加如下样式:
.authcomment {
background-color: #B3FFCC !important;
}
2.在comments.php中找到类似如下代码:
<li class=”<?php echo $oddcomment; ?>” id=”comment…
将以上代码修改成:
<li class=”<?php /* Only use the authcomment class from style.css if the user_id is 1 (admin) */ if (1 == $comment->user_id) $oddcomment = “authcomment”; echo $oddcomment; ?>” id=”comment…
2.只针对搜索引擎用户显示广告
问题. 总所周知,普通的用户并不会点击广告,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 //是 如果用户是来自数组变量中的搜索引擎。
3.在循环中避免重复文章
原因. 由于最近流行的“杂志型”主题,有一个来自于,在首页使用了多个循环//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并没有显示在第一个循环的引用数组。
4.使用页码代替“上一页”和“下一页”连接
问题. 默认情况下,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(); }
?>
代码解释.这个技巧只是简单的将插件包含包了主题文件夹中,我们同样添加了一个pagenavi_init()请求函数来确保页码适当的显示。
5.自动提取文章中的图片
问题.使用自定义字段//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和常规的表达式来搜寻插入到文章内容中的图片,如果找到的话,他们将会被显示出来。
6.拒绝非提交者请求的评论
问题. 垃圾评论对每个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');
7.在WordPress 导航上使用滑动门
问题. 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() 所用,最后在
8.在你的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 <div id="header" style="background:transparent url(images/.jpg) no-repeat top left;">
4.完成,你博客的每个页面或是文章的头部现在将会显示一张随机的图片。
代码解释. 一点都不难,我们只是简单的使用PHP 函数 rand() 初始化了一个变量 $num ,从而在1和10之间获取一个随机数字,然后我们连接 变量 $num 的数字 到我们使用的主题的路径。
9.列出你的预定文章
问题. 和很多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 循环来显示它。






精彩内容,怎容错过!
o(∩_∩)o