分类目录归档:网站建设

围炉网《WordPress 添加ICP备案号》一文中的错误修正

错误及修正

原文zh_CN.php代码第33行,把工信部的网址填错了。需要手动将http://www.miitbeian.gov.cn/修改为http://beian.miit.gov.cn/

个人感想

网上关于WordPress添加备案号的文章很多,往往一句define('WP_ZH_CN_ICP_NUM', true);就结束了,结果在docker版的WordPress里根本就不能显示备案号。
可能是WordPress在某次更新后删除了zh_CN.php文件。

围炉网原文

【声明】本文为AdamsLee原创,转载请注明出自围炉网并保留本文有效链接:WordPress 添加ICP备案号, 转载请保留本声明!

新装的wordpress 4.6.1 发现“设置”-“常规”并没有显示 “ICP备案号”的选项。在wp-config.php设置添加了define('WP_ZH_CN_ICP_NUM', true);后依然没有显示出来。
在网上搜寻了很久也没有发现有人有类似问题,只好自己研究比对,最后发现wp-content/languages下貌似少了zh_CN.php。添加zh_CN.php后,终于可以看到该选项了。zh_CN.php文件内容如下:

<?php
/**
 * ICP license number
 *
 * For compliance with the Telecommunications Regulations. Can be turned off
 * in wp-config.php.
 *
 * @since 3.7.0
 */
function zh_cn_l10n_settings_init() {
    if ( defined( 'WP_ZH_CN_ICP_NUM' ) && WP_ZH_CN_ICP_NUM ) {
        add_settings_field( 'zh_cn_l10n_icp_num',
            'ICP备案号',
            'zh_cn_l10n_icp_num_callback',
            'general' );
        register_setting( 'general', 'zh_cn_l10n_icp_num' );
    }
}

add_action( 'admin_init', 'zh_cn_l10n_settings_init' );

function zh_cn_l10n_icp_num_callback() {
    echo '<input name="zh_cn_l10n_icp_num" type="text" ' .
        'id="zh_cn_l10n_icp_num" value="' .
        esc_attr( get_option( 'zh_cn_l10n_icp_num' ) ) .
        '" class="regluar-text ltr" />' .
        '<p class="description">仅对WordPress自带主题有效。</p>';
}

function zh_cn_l10n_icp_num( $content ) {
    if ( defined( 'WP_ZH_CN_ICP_NUM' ) && WP_ZH_CN_ICP_NUM &&
            get_option( 'zh_cn_l10n_icp_num' ) ) {
        echo '<a href="http://www.miitbeian.gov.cn/" rel="nofollow" ' .
            'title="工业和信息化部ICP/IP地址/域名信息备案管理系统">' .
            esc_attr( get_option( 'zh_cn_l10n_icp_num' ) ) .
             "</a>\n";
    }
}

add_action( 'twentyten_credits', 'zh_cn_l10n_icp_num' );
add_action( 'twentyeleven_credits', 'zh_cn_l10n_icp_num' );
add_action( 'twentytwelve_credits', 'zh_cn_l10n_icp_num' );
add_action( 'twentythirteen_credits', 'zh_cn_l10n_icp_num' );
add_action( 'twentyfourteen_credits', 'zh_cn_l10n_icp_num' );
add_action( 'twentyfifteen_credits', 'zh_cn_l10n_icp_num' );
?>

Markdown的问题

WordPress的Markdown插件(已尝试3个)有以下问题:

  • 代码无法高亮
  • 无法显示代码行数
  • 部分代码字符无法显示

这有点难以容忍。
然而,WordPress自带的编辑器连这篇文章的格式都无法打出来。

WordPress迁移中产生的一些问题

前几天,我更改了wordpress的ssl证书生成方式,于是噩梦开始了。
由于我的wordpress是用docker容器搭建的,结果重建容器后,wp-config.php文件也被重置了。看来挂载/var/www/html文件夹是非常必要的。

无限重定向

不知道为什么wordpress为什么不默认支持https,需要在wp-config.php头部添加:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

这样就能正常进入网站了。

WP Statistics(统计)插件和评论显示IP错误

一般使用反向代理或CDN后,显示正确的评论IP只需要在wp-config.php头部添加:

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  $_SERVER['REMOTE_ADDR'] = $list[0];
}

然而WP Statistics 12.6.3 中,这个设置并不奏效。我调试了一番后,发现插件获取IP用的既不是REMOTE_ADDR,也不是HTTP_X_REAL_IP,而是HTTP_X_FORWARDED_FOR的最后一个IP。真不知道作者是什么思路写下这种bug。
为了防止作者再写出别的bug,我直接伪造所有IP信息,把上面的代码修改为:

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  $_SERVER['REMOTE_ADDR'] = $list[0];
  $_SERVER['HTTP_X_REAL_IP'] = $list[0];
  $_SERVER['HTTP_X_FORWARDED_FOR'] = $list[0];
}

丢失操作前的文章

谁叫你不勤备份啊!修改服务器前一定要备份。