# wordpress小代码:在文章列表页面显示文章字数

- Link: https://yjyj.net/learn/wordpress-learn/5114.html
- Published: 2015-07-03T10:12:13+08:00
- Author: 小 虾

⚡ 生猛大蝦编辑部 · 30 秒核心看点

 * 先写字数统计函数，把文章内容转成可复用的统计结果。
 * 在 save_post 时写入自定义字段，后台保存后即可自动更新。
 * 给文章列表加“字数”列，编辑一眼就能看出每篇文章长度。

WordPress是一个很好的内容管理系统，帮一个公司开发过一个基于WordPress的新闻网站，
该公司有多名编辑，公司主管对每篇新闻文章的字数有要求，以前的CMS不支持文章字数的显示，
对编辑文章字数的统计都是通过Word进行的，很麻烦，了解到了他们的这个小痛点之后，考虑
了一下，统计字数其实不麻烦，就直接给后台加了一个文章列表页面显示文章字数的功能。

 

 

**统计文章字数**

首先我们要把文章的字数统计出来，写了一个统计字数的函数，把文章内容传入这个函数就
可以返回文章的文字字数了，当然这个插件在前台需要显示文章字数的时候也是可以用的。

    ```decode:true
    function count_words ($text) {   
      global $post;   
      if (mb_strlen($output, 'UTF-8') < mb_strlen($text, 'UTF-8')  $output .= mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8');   
      return $output;   
    }
    ```

 

**添加统计到的字数为自定义字段**

获取文章的内容并统计插件，这里有一个不是太完善的地方，就是文章必须保存一次，然后
在更新的时候才能统计到文章字数。

    ```decode:true
    add_action('save_post', 'words_count', 0);
    function words_count($post_ID) {
      $content_post = get_post($post_id);
      $content = $content_post->post_content;

      $words_count = count_words($content);
      update_post_meta($post_ID, 'words_count', $words_count);
    }
    ```

 

**在文章列表页面显示**

这一步是获取第二部保存的文章字数字段，并显示在文章列表中。

    ```decode:true
    add_filter('manage_posts_columns', 'posts_column_words_count_views');
    add_action('manage_posts_custom_column', 'posts_words_count_views',5,2);
    function posts_column_words_count_views($defaults){
        $defaults['words_count'] = __('字数', 'wizhi');
        return $defaults;
    }
    function posts_words_count_views($column_name, $id){
        if($column_name === 'words_count'){
            echo get_post_meta(get_the_ID(), 'words_count', true);
        }
    }
    ```

 

本文来自: http://www.wpzhiku.com/display-post-words-count-in-wordpress-post-list/

❓ 延伸问答与排错指南（FAQ）

WordPress后台怎么显示文章字数？

做法是先统计文章内容字数，再把结果保存到自定义字段，最后通过后台列表列扩展把“字数”
列加进去。这样编辑在文章列表页就能直接查看，不用再打开文章或借助外部工具。

为什么文章字数要在保存后才更新？

因为示例方案是在 save_post 钩子里统计并写入自定义字段，只有文章保存或更新时才会触发。
这样实现简单稳定，但缺点是内容改动后必须先保存一次，列表里的字数才会刷新。

这个字数统计函数能前台复用吗？

可以复用。思路是把文章内容传入统计函数，返回纯文字字数即可，前台需要展示字数时也能
直接调用。实际使用时要注意函数里对 HTML 标签、空白字符和编码的处理。

📚 【[WordPress 学习](https://yjyj.net/category/learn/wordpress-learn)】专栏延伸
阅读与热门精选（[全站文章归档](https://yjyj.net/archive)）：

 * [帮杨林哥差资料的时候,发现另外一个wordpress获取文章内所有图片的办法](https://yjyj.net/learn/wordpress-learn/5094.html)
 * [wordpress内容页获取所有图片附件,并且瀑布流方式调用](https://yjyj.net/learn/wordpress-learn/5070.html)
 * [升级wordpress4.3后 js出现问题,后台编辑无法切换可视化与文本,无法添加媒体](https://yjyj.net/learn/wordpress-learn/5251.html)
 * [显示同个父页面的其他子页面的链接](https://yjyj.net/learn/wordpress-learn/5397.html)
 * 热门必读[升级一下iptables](https://yjyj.net/learn/centos/3208.html)
 * 热门必读[京东云路由器雅典娜 AX6600 折腾记](https://yjyj.net/learn/7810.html)
