无需插件的WordPress实用技巧15条(下)

分享本文:
wordpress-hacks

WordPress的强大之处在于,可以使用插件方便地扩展网站的功能。不过有时候,我们需要修改或添加的功能,仅仅几行代码就可以做到。今天,WPChina继续给你介绍15条非常实用的WordPress技巧的下篇,并且这些技巧都不需任何WordPress插件。

WordPress官方插件目录,大约有近4万个免费的WordPress插件,可以扩展WordPress功能。此外,还有许多无法统计数量的收费插件。通过这些插件,基本上可以满足网站的绝大部分需求。

不过有时候我们所需要的一些功能,不需要插件就同样可以做到。下面,我们就给大家介绍一些非常实用的WordPress技巧,秘诀,窍门,无需安装任何WordPress插件。

本文篇幅较长,分为上下两篇发布。本文为下篇,上篇已经发布:

  1. 无需插件的WordPress实用技巧15条(上) (已经发布)
  2. 无需插件的WordPress实用技巧15条(下) (本文)

WordPress代码微调:文章与页面

wordpress-posts

8. 发布文章之前,要求添加特色图片

使用WordPress发布博客文章或者页面都很容易,然而,有时候仅有文字是不够的,比如新闻、产品页面等。这些页面需要图片,才能更好地传递和表达信息。因此,能不能强制用户在发表文章或页面之前,必须给文章添加特色图片(Featured Image),然后才允许发布呢?

很好,将以下代码复制到你主题的 funcitons.php 文件中,或者放在网站专用插件内:

add_action('save_post', 'wpds_check_thumbnail');
add_action('admin_notices', 'wpds_thumbnail_error');

function wpds_check_thumbnail( $post_id ) {
  // change to any custom post type
  if( get_post_type($post_id) != 'post' )
      return;

  if ( ! has_post_thumbnail( $post_id ) ) {
    // set a transient to show the users an admin message
    set_transient( "has_post_thumbnail", "no" );
    // unhook this function so it doesn't loop infinitely
    remove_action('save_post', 'wpds_check_thumbnail');
    // update the post set it to draft
    wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));

    add_action('save_post', 'wpds_check_thumbnail');
  } else {
    delete_transient( "has_post_thumbnail" );
  }
}

function wpds_thumbnail_error() {
  // check if the transient is set, and display the error message
  if ( get_transient( "has_post_thumbnail" ) == "no" ) {
    echo "<div id='message' class='error'><p><strong>You must add a Featured Image before publishing this. Don't panic, your post is saved.</strong></p></div>";
    delete_transient( "has_post_thumbnail" );
  }
}

很有用吧?当然,你可以根据需要设置自己所需要的提示信息。如果使用中文,请务必将以上文件保存为UTF8 no BOM格式

9. 减少文章版本

版本功能,是WordPress自带的用来自动保存所编辑内容的一种机制。默认清空下,WordPress不限制保存在数据库中的版本数量,不过,“无限”确实是个恐怖的数字,并且也很难说有多大用处。因此,你可以限制保存版本的数量。很简单,你只需要打开 wp-config.php 文件(通常在WordPress安装的根目录下),添加以下设置:

define( 'WP_POST_REVISIONS', 3 );

这里我们限制为3次。你也可以自己修改。如果你想要关闭文章版本功能(依然可以自动保存文章),可以设置为“-1”。之前我们已经介绍过这个技巧。

10. 延迟60分钟将文章发布到RSS Feed

想象一下:你刚把最新文章发布到博客上,RSS feed就立即将内容发给了订阅用户,很快你又发现标题里面有个字写错了。这样的经历真是令人难堪。如果你有更多的时间进行检查,或许会好一些。

没错,使用这段代码就可以给你更多的时间!以下代码可以帮你争取更多时间,将文章延迟1小时再发布到RSS Feed,让你有机会在发布文章之后进行最后的检查。将以下代码复制到所用主题的 funcitons.php 文件内,或者放在网站专用插件中:

function Delay_RSS_After_Publish($where) {
  global $wpdb;

  if (is_feed()) {
    $now = gmdate('Y-m-d H:i:s');
    $wait = '60';
    $device = 'MINUTE';
    $where.=" AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
  }
  return $where;
}

add_filter('posts_where', 'Delay_RSS_After_Publish');

对于需要检查是否有拼写错误的网站来说,这一项技巧非常有用。你也可以修改延迟的时间,只需要修改上面的 $wait=’60’;这里就可以了。

11. 修改摘要的长度

对于某些场景来说,WordPress默认的摘要长度可能不适合网站布局。如果你需要的话,可以把以下代码复制到所用主题的 funcitons.php 文件内,或者放进网站专用插件中:

function custom_excerpt_length( $length ) {
  return 20;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

这里 “return 20” 是用来限制文章摘要的长度,你也可以根据自己需要进行修改。注意,20个字符相当于10个汉字,中文网站排版的时候,可以根据自己网站布局设置合适的摘要长度。WordPress默认的摘要长度是55。

12. 修改自动保存文章功能的时间间隔

自动保存文章功能让写作更加安全,你无须担心各种网络突发状况以及浏览器崩溃等各种意外。不过对于某些用户来说,WordPress默认的每1分钟自动保存一次,或许间隔有些太久了,不得不点击保存按钮。因此,对于这样的码字高手,可以适当降低自动保存的时间间隔。

不需要任何插件,你只需要将以下代码放到WordPress的配置文件 wp-config.php 中:

define( 'AUTOSAVE_INTERVAL', 45 );

这里是将自动保存的时间间隔设置为45秒。当然,如果你写作速度比较慢,也可以增加自动保存的时间间隔,比如可以设置为120秒。

WordPress代码微调:搜索

wordpress-research-hacks

13. 显示搜索结果的数量

搜索结果页面对于网站的用户体验(User eXperience)来说,非常重要,因此应该漂亮一些。问题是,许多WordPress主题的搜索结果页面并没有显示找到多少相关网页。

将以下代码复制到所用主题的 search.php 文件内,将会在搜索结果页面显示找到多少条相关内容:

<h2 class="pagetitle">Search Result for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' — '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>

这比毫无信息含量“搜索结果”要强很多,因为用户可以很直观地了解网站内有多少篇相关的内容。

14. 从搜索结果中排除某个类别

如果你想要进一步控制用户得到的搜索结果,你可能会希望将某个特殊类别排除在搜索结果之外。这种需求可能包括:推销材料,新闻稿,翻译内容,作品展示等。

有这方面的需要吗?打开你所用主题的 functions.php 文件,或者网站专用插件,复制以下代码:

function SearchFilter($query) {
  if ( $query->is_search && ! is_admin() ) {
    $query->set('cat','8,15');
  }
  return $query;
}
add_filter('pre_get_posts','SearchFilter');

通过将特定类别排除出搜索结果,你可以改进提供给用户和网站读者信息的质量。

15. 从搜索结果中排除页面

同样,你也可以将页面排除在搜索结果之外。将以下代码复制到所用主题的 functions.php 文件或者网站专用插件内:

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

add_filter('pre_get_posts','modify_search_filter');

这样,用户只能搜索到网站内的文章,而不会看到他们没多啊兴趣的页面内容。

结论

看到了吧?不需要任何插件,你就可以获得15个WordPress新功能。如果喜欢的话,可以将这些代码复制到你或者你客户的网站上。在这里我们只是想要告诉你,虽然说安装插件也许会更加简单容易,但是对于网站来说,时间越长,所需要的功能也就越多。有些插件会影响到WordPress网站速度。

因此,一般来说,对于网站非常重要且不方便通过几行代码实现的功能,我们建议你使用插件,其他情况下,还是通过代码来说,可以减少对网站速度的影响。

当然,除了以上的这15条技巧,或许你还有自己的类似的WordPress秘笈,通过几行代码不需要插件,就可以实现自己想要的功能。我们欢迎你通过留言或者其他方式联系我们,更我们一起进行分享。

via: 15 WordPress hacks you can do without plugins

分享本文:


评论: 无需插件的WordPress实用技巧15条(下)

  • 都是非常实用的功能,可我总喜欢更新主题,这些代码添加了后,就容易丢失,自己又想不起哪些地方修改了。

    maqingxi 2015/06/22 1:19 下午 回复
    • 你可以参考这篇文章,将这些代码放在一起,就不会丢失了,网站专用插件:https://wpchina.org/how-to-create-a-site-specific-wordpress-plugin-1670/

      Jiang 2015/07/13 12:24 上午 回复

发表一下评论

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