出现这种WordPress主题无法识别问题的原因:

服务器环境禁用了 scandir函数,导致WordPress无法正常缓存主题

方法1:

  1. 找到 php.ini,一般在服务器的 /usr/local/php/etc 目录下(有权限的FTP账户可以操作,且一般是这个位置);
  2. 打开 php.ini,查找其中的“disable_functions”字样,找到并删除紧随其后的“scandir”,最后保存该文件;
  3. 重启服务器的php服务后方可生效(不懂的话就直接通过管理后台重启服务器也行)。

个人网站还好说,如果遇到大公司,运维不给你开启“disable_functions”权限,那就只能进行方法2

方法2:

后台显示已安装主题的列表的方法是list_themes(),在此函数中,WordPress 使用 get_themes() 函数检索可用主题数组,然后遍历此数组以显示每个主题的详细信息。

使用自定义函数scandir1() 替换scandir()

search_theme_directories()的位置在 wp-includes/theme.php

function scandir1($dir, $sort = 0) {
    $files = array();
    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != ‘.’ && $file != ‘..’) {
                $files[] = $file;
            }
        }
        closedir($handle);
    }
    if ($sort != 0) {
        $sort == 1 ? sort($files) : rsort($files);
    }
    return $files;
}

作者 admin

百度广告效果展示