前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >彻底解决WP中文标签404错误

彻底解决WP中文标签404错误

作者头像
老高的技术博客
发布2022-12-27 15:38:20
发布2022-12-27 15:38:20
29100
代码可运行
举报
运行总次数:0
代码可运行

找到网站个目录下文件夹:wp-include文件夹下的class-wp.php,定位此代码段(V3.6在144行)

老高温馨提示:使用本教程前请备份数据库及相关文件

代码语言:javascript
代码运行次数:0
运行
复制
if ( isset($_SERVER['PATH_INFO']) )
    $pathinfo = $_SERVER['PATH_INFO'];
else
    $pathinfo = '';
$pathinfo_array = explode('?', $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = $_SERVER['REQUEST_URI'];

修改为 

if ( isset($_SERVER['PATH_INFO']) )
    $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
else
    $pathinfo = '';
$pathinfo_array = explode('?', $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

至此,wordpress已经学会读中文了。

还有一种解决方式,即给每一个标签都设置一个英文别名,这样设置的标签还是不能使用中文,可以使用下面的代码将所有的标签格式化:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
    header("Content-type: text/html; charset=utf-8");
    // 修改:LAOGAO https://blog.phpgao.com/
    define('MYSQL_HOSTNAME', 'localhost');
    define('MYSQL_USERNAME', 'yourusername');
    define('MYSQL_PASSWORD', 'yourpassword');
    define('MYSQL_DATABASE', 'yourdatabase');
    define('MYSQL_TABLEPRE', 'wp_'); // 表前缀

    error_reporting(E_ALL);
    ini_set('display_errors', 'On');

    $link = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD);
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully<br />';

    mysql_select_db(MYSQL_DATABASE, $link);

    // 下面三句的作用是设置当前连接编码为UTF-8标准。
    // 所以请确保你的WordPress数据库是符合UTF-8编码标准,
    // 否则请自行将下面的UTF-8改成相应的字符集。
    mysql_set_charset('utf8', $link);
    mysql_query('SET NAMES UTF8');
    mysql_query("SET character_set_results = 'utf8', " . "character_set_client = 'utf8', " . "character_set_connection = 'utf8', " . "character_set_database = 'utf8', " . "character_set_server = 'utf8'", $link);
    // 字符设置结束
    echo '<br />';

    // 下面为encode编码tag中的中文slug
    $res = mysql_query("SELECT `term_id`,`name` FROM " . MYSQL_TABLEPRE . "terms");
    //echo "SELECT `term_id`,`slug` FROM ".MYSQL_TABLEPRE."terms";
    while ($row = mysql_fetch_array($res)) {
        echo 'id=' . $row[0] . ' - ' . 'name=' . $row[1] . ' --- ';
        if (mysql_query('UPDATE `' . MYSQL_TABLEPRE . 'terms` SET `slug`=\'' . urlencode($row[1]) . '\' WHERE `term_id` =' . $row[0])) {
            echo 'UPDATED!<br />';
        }
    }
    // 编码结束

    mysql_close($link);

    echo '完成!<br />';
    exit();
?>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档