搜索全站
建站 12 分钟阅读

企业站新闻公告栏目怎么做:栏目结构、更新频率与收录配置

企业站新闻中心更新了大半年,百度却只收录了首页?本文讲清新闻与公告该用普通分类目录还是自定义文章类型,给出可直接用的 register_post_type 代码、URL 结构与归档页设置,并列出更新频率、sitemap 拆分、RSS 与主动推送的完整配置清单与常见踩坑。

U
UFO_PF 2017-06-28 · 阅读 12 分钟
企业 建站
阅读提示
本文约 4,632 字,预计阅读 12 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:发了两百条公司动态,搜索结果里一条都找不到

一家做工业除尘设备的企业站,编辑岗位每周固定发三条”公司新闻”:参加了某某展会、领导视察车间、新增一台设备。两年下来后台累计两百多条,但站长用 site: 指令一查,收录的只有首页和几个产品页,新闻详情页一条没进索引。更糟的是新闻列表页的标题全是”新闻中心 – 公司名”,几十个页面标题完全一样,Google Search Console 里”重复标题标签”的提示堆积了几十条。

问题不在于内容质量,而在于栏目结构从一开始就选错了。很多人把新闻当成普通文章,直接扔进 category 分类目录,导致新闻、产品资讯、行业转载混在同一个 /category/news/ 下;URL 里带着 ?cat=5 之类的参数;列表页没有分页标题区分;再加上每篇正文只有一百来字配一张图,被搜索引擎判定为低质量聚合内容。企业站的新闻栏目既要承担”公司动态”的展示职责,又要兼顾 SEO 收录,两者必须通过 CPT 分离 + 收录配置同时解决。

原理分析:新闻和公告为什么要拆成独立文章类型

WordPress 的 post 是默认文章类型,category 和 post_tag 是挂在它上面的分类法。当新闻、产品、案例、招聘全部共用 post 时,会出现三个连锁问题:URL 无法区分内容类型、归档页模板无法定制、sitemap 无法按类型拆分。改用 register_post_type() 注册独立的 news 类型后,它拥有自己的归档页(/news/)、独立的 rewrite 规则和独立模板文件 archive-news.php、single-news.php。

维度 共用 post + category 独立 CPT news
URL 结构 /category/news/xxx 或与博客混用 /news/xxx,语义清晰
模板定制 只能用 category-news.php archive-news.php / single-news.php
sitemap 与文章混在一份索引里,难以观察收录率 可单独拆出 news-sitemap.xml
后台管理 与文章列表混排,编辑易发错位置 独立菜单,权限可单独控制
分类法 与博客共享标签,标签页重复 独立 news_cat 分类法,互不污染

新闻与公告虽然可以共用一个 CPT,但两者更新节奏差异很大:新闻是持续产出,公告是低频但要求置顶。因此实践中通常注册一个 news CPT,再挂一个 news_cat 分类法,分类里设”公司新闻 / 行业资讯 / 通知公告”三项,通过置顶字段让公告浮在列表顶部,避免为公告单独建一套系统带来的维护成本。

保姆级实操

步骤 1:注册新闻 CPT 与独立分类法。 代码放在子主题 functions.php 或自建功能插件里,不要写进父主题。

add_action( 'init', 'mimangfei_register_news_cpt' );
function mimangfei_register_news_cpt() {
    $labels = array(
        'name'          => '新闻中心',
        'singular_name' => '新闻',
        'add_new_item'  => '发布新闻',
        'edit_item'     => '编辑新闻',
        'all_items'     => '全部新闻',
    );
    $args = array(
        'labels'       => $labels,
        'public'       => true,
        'has_archive'  => true,
        'rewrite'      => array( 'slug' => 'news', 'with_front' => false ),
        'supports'     => array( 'title', 'editor', 'thumbnail', 'excerpt', 'revisions' ),
        'show_in_rest' => true,
        'menu_icon'    => 'dashicons-megaphone',
    );
    register_post_type( 'news', $args );

    register_taxonomy( 'news_cat', 'news', array(
        'label'        => '新闻分类',
        'public'       => true,
        'hierarchical' => true,
        'rewrite'      => array( 'slug' => 'news-category', 'with_front' => false ),
        'show_in_rest' => true,
    ) );
}

步骤 2:让公告置顶、列表分页标题不重复。 用 _news_top 自定义字段做加权排序,并给分页加上页码。

add_action( 'pre_get_posts', 'mimangfei_news_query' );
function mimangfei_news_query( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }
    if ( is_post_type_archive( 'news' ) || is_tax( 'news_cat' ) ) {
        $query->set( 'posts_per_page', 12 );
        $query->set( 'meta_key', '_news_top' );
        $query->set( 'orderby', array( 'meta_value_num' => 'DESC', 'date' => 'DESC' ) );
    }
}

add_filter( 'document_title_parts', 'mimangfei_news_paged_title' );
function mimangfei_news_paged_title( $parts ) {
    $paged = get_query_var( 'paged' );
    if ( $paged > 1 ) {
        $parts['title'] .= ' 第 ' . $paged . ' 页';
    }
    return $parts;
}

步骤 3:把新闻单独拆一份 sitemap。 用 Rank Math 或 Yoast SEO 时,在”Sitemaps → 自定义文章类型”里勾选 news;手写的话用 init 注册 add_feed 或直接让 SEO 插件输出后用 wp_sitemaps_post_types 过滤器保留 news。

add_filter( 'wp_sitemaps_post_types', 'mimangfei_sitemap_keep_news' );
function mimangfei_sitemap_keep_news( $post_types ) {
    unset( $post_types['attachment'] ); // 媒体页不进 sitemap
    return $post_types;
}

步骤 4:配置自动 ping 与主动推送。 WordPress 自带的更新服务在”设置 → 撰写”里,企业站建议留空并改用搜索引擎的主动推送接口,避免大量无效 ping。

# 导出近 100 条已发布新闻的 URL 并主动推送(token 用环境变量传入,不要写进脚本)
wp post list --post_type=news --post_status=publish \
  --field=url --posts_per_page=100 --path=/var/www/mimangfei > /tmp/news-urls.txt

curl -s -H 'Content-Type: text/plain' --data-binary @/tmp/news-urls.txt \
  "http://data.zz.baidu.com/urls?site=https://mimangfei.com&token=${BAIDU_PUSH_TOKEN}"

步骤 5:设定可执行的更新频率。 企业站新闻不要追求日更,每周 2–3 条原创、每篇正文不少于 500 字,比每天 5 条百字水文有效得多。行业资讯类可放宽到转载,但必须带来源链接与自己的一段评述。

常见踩坑

  • 注册完 CPT 后归档页 404,因为没执行”设置 → 固定链接 → 保存更改”刷新 rewrite 规则。
  • has_archive 设为 false 却又建了 archive-news.php,模板永远不生效。
  • 新闻与博客共用 post_tag,导致标签归档页里新闻和产品混排,被判定为内容堆砌。
  • 列表页摘要调用 the_excerpt() 但没填摘要字段,自动生成的内容被截断成半句话。
  • 只在首页放新闻模块,从不给详情页做内链,详情页长期无入口导致不收录。
  • 案例:某建材站把 300 条新闻全放在 category 下,且每篇标题都以”热烈祝贺”开头。百度抓取后判为模板化内容,整个目录收录率不足 5%。改造为独立 CPT、重写标题、给每条新闻加 300 字以上正文并补上产品页内链后,三个月内收录率回升到 70%。
  • 用 query_posts() 改写新闻列表,破坏了主查询,分页直接失效(应使用 pre_get_posts)。
  • 开启整站缓存后新闻列表不更新,编辑以为发布失败。

总结

判断新闻栏目是否健康,看三个数:详情页收录率是否超过 60%、列表页标题是否唯一、每条新闻是否至少有一个来自其他页面的内链。行动清单:① 新闻用独立 CPT 而非 category;② 固定链接保存一次刷新规则;③ 公告用自定义字段置顶而非手动调日期;④ sitemap 按类型拆分便于观察;⑤ 更新频率以”每周 2–3 条原创”为基准;⑥ 每篇正文 500 字起。栏目结构想清楚了再回头看 企业站招聘栏目的实现方式、博客归档页与标签体系设计 与 WordPress 网站收录优化。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。