WordPress添加https后出现重定向太多无法打开的错误

WordPress添加https后出现的错误,有两种情况,我都遇到了。

  1. 添加https后,前台页面可以打开,但是无法进入wordpress后台
  2. 网站搬家后,导入数据库,前端,后台都无法进入,提示重定向太多清除缓存的错误

网上找了很多方法,最有效的解放方法是修改wp-config.php,找到如下代码:

** 
@package WordPress
*/

在下方添加如下代码:

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

搞定。

WordPress终极优化,效果明显

有一个网站,文章即将突破10万+,前端、后台都极其卡顿,尤其是在搜素文章的时候,CPU陡升。网上找了一些优化教程,最后实验下来,最有效的终极方案是Opcache+Memcached+WP Rocket组合,加上用Relevanssi Search建立搜素索引。

如果是宝塔,直接在后台安装Opcache和Memcached即可,简单。以下以军哥的lnmp为例。

Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。

安装
进入lnmp解压后的目录,执行:./memcached.sh
回车确认后就会自动安装memcache php扩展和memcached。

开启Memcached后需要将PHP Memcached 扩展object-cache.php 文件复制到 wp-content 目录下,注意不是 wp-content/plugins/。

可以参看这篇文章:https://blog.wpjam.com/article/wordpress-memcached/

Opcache

opcache是php代码层缓存,memcached是数据层缓存。

此脚本是用来安装opcache的,是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。

安装
进入lnmp解压后的目录,执行:./opcache.sh
回车确认后就会自动安装opcache。

最后是安装WP Rocket,网上有相关的破解版。

Relevanssi Search

直接在wordpress后台搜素Relevanssi Search插件并且启用设置。

这个组合,对于文章量级比较大的wordpress站点,优化效果非常明显。

关于宝塔面板安装Opcache+Memcached

宝塔会经常容易漏掉Memcached的PHP扩展。有人说要先安装Memcached的PHP扩展,再安装Memcached,否则不起作用,我没有验证过。正确保险的安装顺序是:

  1. 宝塔软件商店中,找到已经安装的PHP7.4 – – – 安装扩展,安装Opcache和Memcached
  2. 软件商店中安装Memcached
  3. 将object-cache.php 文件复制到 wp-content 目录下,注意不是 wp-content/plugins/

参考:https://www.dazhuanlan.com/2020/01/17/5e213a18be00e/

WordPress其他优化技巧:https://tlanyan.pp.ua/wordpress-performance-optimization/

WordPress自动使用post id作为文章别名(slug)

代码如下,添加到主题的function.php文件中,注意,添加后文章原来的url结构及别名不会更改,新添加文章将自动使用post id作为别名。

/**
 * 新文章自动使用ID作为别名
 * 作用:即使你设置固定连接结构为 %postname% ,仍旧自动生成 ID 结构的链接
 */
add_action( 'save_post', 'using_id_as_slug', 10, 2 );
function using_id_as_slug($post_id, $post){
	global $post_type;
	if($post_type=='post'){ //只对文章生效
		// 如果是文章的版本,不生效
		if (wp_is_post_revision($post_id))
			return false;
		// 取消挂载该函数,防止无限循环
		remove_action('save_post', 'using_id_as_slug' );
		// 使用文章ID作为文章的别名
		wp_update_post(array('ID' => $post_id, 'post_name' => $post_id ));
		// 重新挂载该函数
		add_action('save_post', 'using_id_as_slug' );
	}
}

让WordPress支持svg图片的两种简单方法

svg格式的图片,wordpress默认是不支持的,当然你可以用插件来让它支持,但是还有更加简单的方法。

方法一

更改wp_include/functions.php文件, 找到wp_get_mime_types()函数,在// Image formats.注析后面图像格式最后一行加入svg对应的格式: ‘svg’ => ‘image/svg+xml’, 最后看起来代码是这样的:

     // Image formats.
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
        'bmp' => 'image/bmp',
        'tiff|tif' => 'image/tiff',
        'ico' => 'image/x-icon',
        'svg' => 'image/svg+xml',
        // Video formats.
方法二

更改所使用主题文件夹下面的functions.php文件。把下面的代码加入其中:

function my_upload_mimes($mimes = array()) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
}
 
add_filter('upload_mimes', 'my_upload_mimes');

需要注意的是,这种方法,如果你更换主题后,还需要重新修改主题的function文件。

WordPress开启后台链接管理(友情链接)

不知道从什么时候起,wordpress关闭了后台默认的链接管理,导致添加友情链接有些不太方便。

当然,你可以可以通过插件来实现此功能,但是插件用太多会导致wordpress臃肿,速度变慢,最简单的方法,通过下面一行代码,直接开启wordpress的链接管理。

在你的主题functions.php文件中加入以下代码:

add_filter( 'pre_option_link_manager_enabled', '__return_true' );

刷新,就能看到熟悉的链接管理了。

WordPress关闭feed防采集

刚做的新网站,就发现有robot在采集,而很多采集插件都是针对feed的,所以关闭feed,可以在一定程度防止采集。

除了通过插件实现关闭feed,还有以下几种方法:

  1. 将以下代码复制到wordpress主题的functions.php中
//关闭rss feed功能
function disable_all_feeds() {
wp_die(__('<h1>本博客不提供Feed,请访问网站<a href="'.get_bloginfo('url').'">首页</a>!</h1>'));
}
add_action('do_feed', 'disable_all_feeds', 1);
add_action('do_feed_rdf', 'disable_all_feeds', 1);
add_action('do_feed_rss', 'disable_all_feeds', 1);
add_action('do_feed_rss2', 'disable_all_feeds', 1);
add_action('do_feed_atom', 'disable_all_feeds', 1);

2. 另外还需要注意的是wordpress还会在网页中生成feed地址,查看网页源码可看到,为了不让此内容显示,继续将以下代码复制粘贴到刚才的functions.php中

继续阅读