分类
WordPress教程

让WordPress发布评论可以使用ctrl+enter快捷键

找到你当前使用的主题,编辑Comments.php,搜索如下代码:

</form>

找到以后在这个前面加上(确保你的form ID为 comment)

<script type="text/javascript">
document.getElementById("comment").onkeydown = function (moz_ev)
{
  var ev = null;
  if (window.event){
    ev = window.event;
  }else{
    ev = moz_ev;
  }

  if (ev != null && ev.ctrlKey && ev.keyCode == 13)
  {
    document.getElementById("submit").click();
  }
}
</script>
分类
WordPress教程

把页面从WordPress搜索结果中排除

默认情况下,WordPress 搜索结果显示发布的日志和页面,如果你想把页面从 WordPress 搜索结果中排除,在当前主题的 functions.php 文件中添加如下的函数:

add_filter('pre_get_posts','searchFilter');
function searchFilter($query) {
  if ($query->is_search) {
    $query->set('post_type', 'post');
  }
  return $query;
}

当然,你也可以把 post_type 设置为 page,这样搜索结果只有页面。

分类
WordPress教程

如何在WordPress 3.0后台菜单系统中显示Home链接

WordPress 3.0 的菜单是非常好的一个功能,现在很多人通过添加自定义链接来天添加首页的链接,这里展示个技巧,把首页的链接放入 Pages 的 WordPress 3.0 菜单系统的 wiget 中,让用户直接拖动添加:

将下面代码复制到 functions.php 中即可:

add_filter( 'wp_page_menu_args', 'homePageMenuArgs' );
function homePageMenuArgs( $args ) {
$args['show_home'] = true;
return $args;
}
分类
WordPress教程

WordPress如何获取文章内容的第一段

如果文章没有填摘要,使用文章的第一段作为摘要是不错的选择,那么如何获取文章内容的第一段呢?可以使用下面的函数

function get_first_p($post){
  //如果是使用 Windows Live Writer 这些工具写日志,可能使用<p>和</p>进行分段
  if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$matches)){
    return $matches[1];
  } else {
    //如果直接在 WordPress 写日志,使用换行符(\n)来分段
    $post_content = explode("\n",trim(strip_tags($post->post_content)));
    return $post_content ['0'];
  }
}
分类
WordPress教程

WordPress彩色标签云

下面代码加到functions.php文件中

function colorCloudCallback($matches){
    $text = $matches[1];
    $colors = array('F99', 'C9C', 'F96', '6CC', '6C9', '37A7FF', 'B0D686', 'E6CC6E');
    $color = $colors[dechex(rand(0, 7))];
    $pattern = '/style=(\'|\")(.*)(\'|\")/i';
    $text = preg_replace($pattern, "style=\"display: inline-block; *display: inline; *zoom: 1; color: #fff; padding: 1px 5px; margin: 0 5px 5px 0; background-color: #{$color}; border-radius: 3px; -webkit-transition: background-color .4s linear; -moz-transition: background-color .4s linear; transition: background-color .4s linear;\"", $text);
    return "<a $text>";
}

add_filter('wp_tag_cloud', 'colorCloud', 1);
function colorCloud($text){
    $text = preg_replace_callback('|<a (.+?)>|i', 'colorCloudCallback', $text);
    return $text;
}
分类
WordPress教程

WordPress文章/页面添加分页的方法页面添加分页的方法

当WP文章很长的时候,需要添加分页来将文章切分为多页,那么可以使用标签:

<!–nextpage–>

在WP编辑器的HTML模式下,在需要分页的内容后面输该分页标签即可完成分页,该标签当然也可重复使用。

如果在文章中添加了分页标签,查看该文章时,却没有显示分页导航的效果。这时就需要在模板的相关文件添加一个内置函数来得到分页导航。

在主题的index.和single.php(如果有的话)等文件中,找到类似下面的代码:

<?php the_content(__('(more...)'));?>

在这行代码下面添加

<?php wp_link_pages(); ?>

保存后,重新刷新添加了分页的文章,你就可以看到分页的效果了。

分类
WordPress教程

WordPress相关文章代码版

<h3>Related Posts</h3>
<ul>
<?php
$post_num = 5;
$exclude_id = $post->ID;
$posttags = get_the_tags(); $i = 0;
if ( $posttags ) {
	$tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->term_id . ',';
	$args = array(
		'post_status' => 'publish',
		'tag__in' => explode(',', $tags),
		'post__not_in' => explode(',', $exclude_id),
		'caller_get_posts' => 1,
		'orderby' => 'comment_date',
		'posts_per_page' => $post_num
	);
	query_posts($args);
	while( have_posts() ) { the_post(); ?>
		<li><a rel="bookmark" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
	<?php
		$exclude_id .= ',' . $post->ID; $i ++;
	} wp_reset_query();
}
if ( $i < $post_num ) {
	$cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ',';
	$args = array(
		'category__in' => explode(',', $cats),
		'post__not_in' => explode(',', $exclude_id),
		'caller_get_posts' => 1,
		'orderby' => 'comment_date',
		'posts_per_page' => $post_num - $i
	);
	query_posts($args);
	while( have_posts() ) { the_post(); ?>
		<li><a rel="bookmark" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	<?php $i++;
	} wp_reset_query();
}
if ( $i  == 0 )  echo '<li>没有相关文章!</li>';
?>
</ul>
分类
WordPress教程

WordPress实现随机一篇文章

其实这效果实现非常简单,只要一个简单的自定义页面即可,你只需要创建一个php模板文件,命名为random.php。

代码如下:

<?php
/*
Template Name: random
*/
?>

<?php $rand_post=get_posts('numberposts=1&orderby=rand'); foreach($rand_post as $post) : ?>
<script>location="<?php the_permalink(); ?>";</script>
<?php endforeach; ?>

然后“添加新页面”时选择该random模板即可。

分类
WordPress教程

WordPress设置文章只允许特定用户阅读

某个分类/标签的文章只允许登陆用户阅读

if( in_category( array( 'music', 'news' ) ) ) {
    if(is_user_logged_in())
        the_content(;
    else
        echo '请登陆后阅读本文!';
} else {
    the_content();
}

这样分类别名或名称为 music 和 post 的分类下的文章内容就只对登陆用户开放了,游客将会看到提示“请登陆后阅读本文!”,如果你想再添加一个分类images,可以将 array( ‘music’, ‘post’ ) 改成 array( ‘music’, ‘post’, ‘images’ ),更多依次类推;如果只限定一个分类music可以写成 in_category( ‘music’ ) 。如果是限定含有某些标签的文章只对登陆用户开放,可以将以上代码第一行改成:

if( has_tag( array( 'music', 'news' ) ) ) {

music和news为标签的名称或别名,多个标签的写法跟分类相同!

某个分类/标签的文章只允许特定角色的注册用户阅读

WordPress站点的注册用户还可以分三六九等,包括订阅者、投稿者、管理员等等,对于已经登陆的注册用户,同样可以根据用户的角色来决定是否有权阅读文章,在第一部分内容的基础上再加个限制条件就可以了,将第一部分代码的第 2 行改成:

 global $current_user;
 get_currentuserinfo();
 if(is_user_logged_in() && $current_user->user_level > 3)

这样等级小于 3 的注册用户将无权阅读分类music和news下的文章,文章标签的限定类似,详见第一部分的说明。WordPress注册用户的等级参见以下说明:

0 级对应 订阅者

1 级对应 投稿者

2 – 4 级对应 作者

5 – 7 级对应 编辑

8 – 10 级对应 管理员

回复或登录可见

如果你想隐藏文章的部分内容(如猜谜游戏的谜底),让读者登录后才可查看隐藏的内容,可以使用这款插件:Login to view all

如果你是想让读者回复后才可以阅读隐藏的内容,可以用这款插件:Easy2hide