WordPress手动设置不能上传,手动插入媒体资源到数据库
为了WordPress安全,我设置不允许上传文件,因此当我需要使用媒体的时候,我需要手动插入媒体资源到数据库。
wp_posts
表中。每张图片在wp_posts
表中都被视为一个“附件”(attachment),其post_type
字段的值为attachment
。
第一步:检查你的表前缀
首先,需要注意的是WordPress的数据库表前缀默认是wp_
,但根据你的安装配置,这个前缀可能有所不同。你可以通过WordPress的wp-config.php
文件找到这个前缀,里面会有类似这样的行:
php复制代码
define('DB_PREFIX', 'your_prefix_'); // 注意:很多WordPress安装不显式定义这个,而是使用默认的wp_
如果wp-config.php
中没有定义DB_PREFIX
,那么很可能你的表前缀就是wp_
。
第二步:插入图片记录到wp_posts
要手动插入一张图片的记录到wp_posts
表,你需要知道一些额外信息,比如图片的GUID(全局唯一标识符,通常就是图片的URL)、MIME类型(如image/jpeg
)、文件大小等。但这里,我们假设你只是想要插入一个基本的记录,并且你已经上传了名为401.jpg
的图片到WordPress的wp-content/uploads
目录(或其子目录)。
以下是一个基本的SQL插入语句示例,但请注意,你需要根据实际情况调整表前缀、日期和GUID等信息:
INSERT INTO wp_posts (post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count)
VALUES (1, NOW(), NOW(), '', '401.jpg', '', 'inherit', 'open', 'closed', '', '401', '', '', NOW(), NOW(), '', 0, 'http://yourdomain.com/wp-content/uploads/2023/04/401.jpg', 0, 'attachment', 'image/jpeg', 0);
注意:
-
post_author
:这里假设是用户ID 1,通常是管理员。 -
post_date
和post_date_gmt
:使用NOW()
函数获取当前时间。 -
post_content
:这里留空,因为对于图片来说,通常不需要内容字段。 -
post_title
:这里是图片的文件名,但你也可以设置为其他标题。 -
guid
:图片的URL,需要根据你的WordPress安装和上传的目录结构调整。 -
post_mime_type
:这里是图片的MIME类型,根据图片类型设置,如image/jpeg
。
第三步:(可选)更新元数据
对于图片来说,还可能会有额外的元数据存储在wp_postmeta
表中,比如图片的宽度、高度等。但这一步通常是由WordPress自动处理的,除非你需要手动设置这些值。
总结