整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTTPS协议与WordPress升级后网站不兼容的

HTTPS协议与WordPress升级后网站不兼容的解决方法

莱神兽个人博客之前上线装了一个WordPress缓存插件WP Super Cache,这个WordPress插件安装是有一些条件的;茹莱神兽没有注意这些,直接按照常规插件的方法装的,结果插件出现了后台不兼容问题,不过还是能勉强用,不过每次打开这个插件页面,顶部总会出现哪些不好看的问题,茹莱神兽调试无果就放着没管,能用就行了。

HTTPS协议

前段时间,茹莱神兽实在无法忍受这个插件给后台带来的不兼容性错误,于是找来了关于WordPress缓存插件WP Super Cache的安装卸载方法,然后一步步的跟着步骤删除。

通过FTP清理了WordPress缓存插件WP Super Cache之后,登录后台也没有出现其他的问题,然后看见WordPress程序又有更新了,茹莱神兽突然发现WordPress程序已经升级到了5.0以上了,于是就打算给博客来个手工升级。

进入WordPress中文网,下载WordPress程序最新版本安装包,解压安装包,删除wp-content文件夹,然后利用FTP上传覆盖原来的文件。

覆盖完毕后打开浏览器输入http://域名/wp-admin/upgrade.php,可能会提示需要升级wordpress数据库,茹莱神兽按照提示升级了Wordpress数据库。

然后访问博客首页,结果就出现了首页板块错乱的问题,茹莱神兽本想登录WordPress后台进行查看一下,结果后台也无法登陆了,整个页面直接提示出现链接多次重置性问题,茹莱神兽意识到博客升级之后,出现问题了。

https协议下WordPress升级不兼容及后台登陆问题

茹莱神兽博客自从升级出问题之后,扔在哪里两天没有处理,后面到周末的时候,在家里准备自己研究一下;后台登录不上,茹莱神兽以为是升级的时候没有删除wp-admin文件夹的问题,经过测试,结果不是这个问题。

茹莱神兽也试图通过WordPress中文网下载原有的版本,以此来恢复WordPress博客的后台登录问题,但是经过测试也行不通。

茹莱神兽博客出问题之后,茹莱神兽做了一下尝试来试图恢复博客:

1、通过网上查找资料来试图解决当前的疑问,找了关于WordPress方面大量的文章解惑,结果没有一篇是茹莱神兽想要的,后面才知道是没有抓住问题的重点导致的。

2、求助了WordPress博客交流群,以前的同事以及现在的同事,问题是找到了,但是因为比较忙,所以暂时只能茹莱神兽自己操作。

3、茹莱神兽的域名和虚拟主机都是来自西部数码的,于是茹莱神兽也向西数的工作人员提交了有问必答,问题是发现了,给的回答是,因为程序非本公司开发,所以不敢贸然修改。

通过这些尝试与诊断,发现茹莱神兽博客的首页有大量的报错问题,之前的茹莱神兽也给WordPress博客申请了SSL证书,首页报错发现了大量未含有HTTPS开头的链接地址,这显然是不符合常理的。

很多图片的链接地址都是http开头的,茹莱神兽博客申请SSL证书之后,全站都开启了HTTPS协议,首页不兼容,图片不显示,西数那边和同事的反应都是跟这个有关。必须要把http://完全修改为https://才行,可是茹莱神兽却无从下手。

晚上下班回家,茹莱神兽坐在电脑旁,再一次通过百度搜索关于WordPress升级之后,后台连接多次重置无法登陆等问题,翻来覆去的找。

最终一篇关于https协议WordPress升级之后,后台无法登陆的解决方法,大意和这个类似的文章标题,这是一个独立博客,茹莱神兽看了这篇文章,发现了一些蛛丝马迹。

整篇文章指出,通过https协议改造过的WordPress博客,升级之后若是出现不兼容性问题,后台重置而无法登陆,应该是根目录web.config.php文件里面缺少关于HTTPS方面的配置,然后列出了三行关于https的配置代码。

茹莱神兽当时在犹豫,后面又想,反正博客已经这样了,不可能会再坏的;于是就把这三行代码添加到了web.config.php文件里面,然后刷新首页。

茹莱神兽博客直接回复正常,真是踏破铁鞋无觅处得来全不费工夫,至于那三行代码,茹莱神兽暂时忘记了,还没有记录呢,不过已经收藏了。

作者:茹莱神兽

来源:https://www.badpon.com/710.html

wordpress主题的动态模板中,搜索页模板并不是必须的。但是,为了对用户更加的友好,可以让用户在wordpress网站上能够通过搜索来查找自己的想要的文章内容,我们还是有必要给trans主题添加一个搜索页模板。一般情况下,wordpress主题动态模板的搜索页的整体布局和文章列表页模板是差不多的,所以,我们可以参照文章列表页来做。

第一步:创建一个search.php文件。

在wordpress主题trans目录下创建一个search.php文件,这是wordpress程序要求的默认搜索页模板的文件,名字必须是search。然后,把trans静态模板search.html文件中的代码全部复制到search.php文件中。

第二步:修改头部的代码。

在search.php文件中,删除从< !doctype>到< /header>标签之间的所有代码。然后,在同样的位置,通过wordpress函数来引入公共的头部模板文件:

< ?php get_header(); //引入头部模板 ?>

修改头部模板header.php文件中的搜索表单的代码,代码如下:

< form action="< ?php bloginfo("siteurl"); ?>" method="get">

< input type="search" name="s" placeholder="搜索...">

< input type="submit" value="搜索">

</form>

注:第一个input输入框的name值必须是 s (如上图),这也是wordpress的硬性要求。否则,就搜索不到任何内容。

第三步:修改search.php的侧边栏代码。

在search.php文件中,删除< div class="c_right">标签所包含的所有侧边栏代码,然后,在这个位置上,引入sidebar.php侧边栏公共模板:

< ?php get_sidebar(); //引入侧边栏模板 ?>

第四步:修改搜索页模板的底部代码。

在搜索页模板中,删除从< footer>标签到模板代码结束的所有底部代码,然后,在当前的位置上,添加如下代码引入底部公共模板:

< ?php get_footer(); //引入底部模板 ?>

第五步:修改search.php的左侧主体部分的面包屑导航。

因为是搜索页面模板,所以,这个面包屑导航,我们要体现出搜索结果。所以,我们删除search.php模板中< div class="left_top">标签内部的所有代码,替换成如下的代码:

< ul>< li>< span class="dashicons-before dashicons-admin-generic"></span>搜索</li>< li>< a href="<?php bloginfo("siteurl"); ?>">< span class="dashicons-before dashicons-admin-home"></span>首页</a> > 搜索结果</li></ul>< ul> 关键词“< ?php the_search_query(); ?>”共有 < ?php global $wp_query; echo $wp_query->found_posts; ?> 个搜索结果</ul>

上面代码解说:

the_search_query():输出要搜索的关键词;$wp_query:是wordpress提供的一个全局变量,它包含当前页面的所有查询数据;$wp_query->found_posts:搜索当前关键词的数量

搜索页面包屑导航效果如下图:

第六步:修改搜索页模板左侧的文章列表。

删除search.php搜索页模板中< div class="left_bottom">标签内部的所有代码,然后,替换成如下代码:

< ?php if ( have_posts() ): while ( have_posts() ) : the_post();?>< div class="list">< ul class="list_h">< a href="< ?php the_permalink(); ?>">< ?php the_title(); ?></a></ul>< ul class="list_con">< ul class="list_con_left">< a href="< ?php the_permalink(); ?>"> < ?php if(has_post_thumbnail()) { //如果有特色图片,就调用特色图片the_post_thumbnail( 'thumbnail' ,array( 'alt'=> trim(strip_tags( $post->post_title )), 'title'=> trim(strip_tags( $post->post_title )))); }else { //否则调用文章第一张图片echo '<img src="'.catch_first_image().'" alt="'.$post->post_title.'" width="150" height="150" />';}?></a></ul>< ul class="list_con_right">< li>< ?php echo mb_substr(strip_tags($post->post_content),0,120,'utf-8'); ?> ... </li>< li>< span class="dashicons-before dashicons-admin-users">< ?php the_author(); ?> </span>< span class="dashicons-before dashicons-calendar-alt">< ?php the_time("Y年m月d日"); ?> </span>< span class="dashicons-before dashicons-visibility">< ?php echo get_post_meta($post->ID, 'views', true); ?> </span></li></ul></ul></div>

< ?php endwhile;endif;?>

这段代码,我们在archive.php文章列表页模板中我们已经介绍过了,就不多说了。

第七步:添加分页代码。

在trans静态模板的代码中,我们没有分布代码,这里,我们添加上搜索结果的分页效果代码:

< div class="left_page">< ?phpthe_posts_pagination( array('mid_size'=> 3, //当前页码数的 两边 显示几个页码。'prev_text'=>'<', //上一页'next_text'=>'>', //下一南) );?></div>

这里,我们使用到了wordpress提供的分页函数the_posts_pagination()来实现搜索页的文章列表的分页效果。这个函数我们在修改首页模板时,我们就介绍过了,如果想了解它,可以回到我们创建首页模板index.php的文章去看看。

?好了,通过以上几步,我们就完成了wordpress主题动态模板trans的搜索页面模板的创建和修改。此时,我们在头部搜索框中输入关键词进行搜索后,搜索结果如上图所示。从这几节课,我们可以看出,有了公共模板后,我们创建其它动态模板时,就方便多了,只要按照本节的几个步骤,就可以很轻松地创建出wordpress主题的动态模板文件。如果喜欢我的文章,别忘了帮我“点赞、评论和关注我”哦。


HP比较麻烦的地方就是大部分项目都需要运行php-fpm和nginx,比如WordPress也是运行在php-fpm环境下的,所以一般都需要安装php-fpm,nginx和mysql。

幸好现在容器技术可以方便的搭建环境,现在我记录下我用Podman搭建WordPress开发环境。

WordPress

Windows 10 系统,安装好Podman,我的Podman版本信息如下

PS D:\wordpress> podman version
Client:       Podman Engine                           
Version:      4.5.1                                   
API Version:  4.5.1                                   
Go Version:   go1.20.4                                
Git Commit:   9eef30051c83f62816a1772a743e5f1271b196d7
Built:        Sat May 27 01:07:48 2023                
OS/Arch:      windows/amd64                           
                                                      
Server:       Podman Engine                           
Version:      4.5.0                                   
API Version:  4.5.0                                   
Go Version:   go1.19.7                                
Built:        Fri Apr 14 23:42:56 2023                
OS/Arch:      linux/amd64            

以下是搭建开发环境的过程,我选择了php8.2, WordPress6.3

Wordpress6.3项目检出

下载WordPress代码到本地

不过我建议直接使用git clone,Github比较慢,我同步了一份到Gitee

git@gitee.com:uully/wordpress.git

开发的时候从tag 6.3 创建一个新的分支进行开发

创建自定义的docker-compose

项目更目录下新建docker-compose.yml,示例如下,添加需要的service,这里用到mysql,php-fpm和nginx

version: '3'

services:
  db:
    image: mysql:5.6
    command: "--default-authentication-plugin=mysql_native_password"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
        - wp_network
  nginx:
    image: nginx:1.25
    volumes:
      - .:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./log/nginx:/var/log/nginx
    ports:
      - "80:80"
    networks:
      - wp_network
    depends_on:
      - php-fpm
  php-fpm:
    build:
      context: ./php-fpm
    volumes:
      - .:/var/www/html
    networks:
        - wp_network
    depends_on:
      - db
networks:
  wp_network: {}

具体配置可以参考我提交的alien分支的文件。

WordPress podman compose

运行开发环境

在项目根目录运行

podman-compose up -d

是不是非常的简单,访问localhost就可以运行你本地的WordPress了,最后祝大家开心的使用WordPress进行项目开发。

WordPress setup