我正在编写一个简单的脚本&插件将“暂存”Wordpress站点移动到生产站点。方法很简单:mysql dump,检查所有内容到源代码控制,调整数据库名称,在生产中恢复。
我遇到的一个问题是我无法弄清楚如何切换设置>下的搜索引擎可见性设置。读。我希望搜索引擎可以忽略分段,但不会在生产中覆盖该设置(恢复后)。
关于如何做到这一点的任何想法?快速和脏(使用sed / find和amp;替换sql转储文件等)很好。
由于
答案 0 :(得分:5)
Wordpress搜索引擎可见性状态存储在表格选项中,选项名称为'blog_public'
,如果搜索引擎可以看到该网站,则为'1'
;如果搜索引擎无法看到该网站,则为'0'
,
所以,也许你可以使用wordpress函数中的update_option来切换它,
update_option('blog_public', '1');
或直接将其替换为数据库
答案 1 :(得分:0)
我根本不会使用Wordpress网站可见性设置。
我建议使用其中的一些/全部:
User-agent: * Disallow: /
(但是你必须相信搜索引擎会尊重它,就像你在做Wordpress设置一样)
使用.htaccess
和.htpasswd
之类的密码保护登台网站(假设您使用的是Apache服务器)。
使用.htaccess
限制从除少量IP地址之外的任何地址访问您的暂存网站。
这样您就可以进行一次更改,并且每次执行同步时都不需要对数据库执行危险的sed操作。
答案 2 :(得分:0)
直接解决方案
#!/bin/bash
# WordPress > Settings > Reading > Search Engine Visibility
# 0 - discourages search engines from indexing the site (private)
# 1 - encourages search engines from indexing the site (public)
wp_production_blog_public="1"
BLOG_PRIVATE="'blog_public','0'"
BLOG_PUBLIC="'blog_public','1'"
BLOG_PUBLICITY_VALUE="'blog_public','$wp_production_blog_public'"
# Use sed to execute search-and-replace
# These lines ensure the production site will follow the value of
# the `wp_production_blog_public` even if the staging site is either private or public
sed "s#$BLOG_PRIVATE#$BLOG_PUBLICITY_VALUE#g" "database.staging.sql" > "database.pre-production.sql"
sed "s#$BLOG_PUBLIC#$BLOG_PUBLICITY_VALUE#g" "database.pre-production.sql" > "database.production.sql"
我正在与您建立一个类似的项目。使用上述脚本,您可以生成一个新的生产数据库,您可以在其中设置Wordpress的“搜索引擎可见性”的值。
您只需要由mysqldump
生成的转储文件或phpMyAdmin
的备份文件
database.staging.sql
运行脚本后,您将能够拥有一个已被搜索和替换的数据库。
database.production.sql