wordpress安装插件open_basedir restriction in effect错误解决方法

wordpress下载的第三方插件,上传安装的时候,一直提示如下相关错误:

Warning: scandir(): open_basedir restriction in effect. File(/www/wwwroot) is not within the allowed path(s)

开始以为环境配置问题,调整了很久,换了不同服务器测试,也都是这个错误。

网上查询,原来只需要关闭宝塔面板中的“防跨站攻击”即可。

继续阅读

WordPress数据表及字段

WordPress数据库的11个数据表

  • wp_commentmeta 文章评论额外信息表
  • wp_comments 文章评论信息表
  • wp_links 链接信息表
  • wp_options 基本配置信息表,通常通过get_option来操作,该表通常作为插件存储数据的一个地方。
  • wp_postmeta 文章额外数据表,例如文章浏览次数,文章的自定义字段等都存储在这里
  • wp_posts 文章信息表,包括了日志、附件、页面等等信息。是WordPress最重要的一个数据表。
  • wp_terms 文章分类、链接分类、标签的信息表。
  • wp_term_relationships 分类与文章信息表(wp_posts)、链接表(wp_links)的关联表。
  • wp_term_taxonomy 分类信息表,区分wp_terms信息的分类类型,有category、link_category和tag三种分类类型。
  • wp_usermeta 用户额外信息表
  • wp_users 用户基本信息表。存放系统所有用户基本信息。
继续阅读

火车采集器wordpress数据库发布规则

火车采集到的数据,直接数据库发布,比之前web接口发布,要高效很多很多,而且不太消耗服务器资源,高效!

INSERT INTO wp_posts (post_title,post_content,post_author,post_name,post_date) VALUES ('[标签:标题]','[标签:内容]','1','[标签:slug]','[系统时间转化:yyyy-MM-dd HH:mm:ss]')
INSERT INTO wp_term_relationships (object_id,term_taxonomy_id) VALUES ('[文章编号:wp_posts]','[标签:catid]')
INSERT INTO wp_postmeta (post_id,meta_key,meta_value) VALUES ('[文章编号:wp_posts]','[标签:自定义字段]','[标签:自定义值]')

若是单表或多表无关联,则直接写INSERT语句即可;

若是多表,且存在某字段相互关联,则用 文章编号:表名XXX] 来关联上一个表的自增ID;

代码1:slug标签为URL别名,自定义url别名有利于seo,更重要的是可以给采集来的数据添加内部链接。

代码2:是给添加的文章归类;catid标签可以是一个固定值,直接从采集结果中传递过来。

代码3:给文章添加自定义字段。

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文件。