以编程方式控制Wordpress的搜索引擎可见性

时间:2013-11-22 17:45:18

标签: wordpress

我正在编写一个简单的脚本&插件将“暂存”Wordpress站点移动到生产站点。方法很简单:mysql dump,检查所有内容到源代码控制,调整数据库名称,在生产中恢复。

我遇到的一个问题是我无法弄清楚如何切换设置>下的搜索引擎可见性设置。读。我希望搜索引擎可以忽略分段,但不会在生产中覆盖该设置(恢复后)。

关于如何做到这一点的任何想法?快速和脏(使用sed / find和amp;替换sql转储文件等)很好。

由于

3 个答案:

答案 0 :(得分:5)

Wordpress搜索引擎可见性状态存储在表格选项中,选项名称为'blog_public',如果搜索引擎可以看到该网站,则为'1';如果搜索引擎无法看到该网站,则为'0'

所以,也许你可以使用wordpress函数中的update_option来切换它,

update_option('blog_public', '1');

或直接将其替换为数据库

答案 1 :(得分:0)

我根本不会使用Wordpress网站可见性设置。

我建议使用其中的一些/全部:

  1. 在您的暂存网站上使用robots.txt(只记得不要复制到直播)
  2.    User-agent: *
       Disallow: /
    

    (但是你必须相信搜索引擎会尊重它,就像你在做Wordpress设置一样)

    1. 使用.htaccess.htpasswd之类的密码保护登台网站(假设您使用的是Apache服务器)。

    2. 使用.htaccess限制从除少量IP地址之外的任何地址访问您的暂存网站。

    3. 这样您就可以进行一次更改,并且每次执行同步时都不需要对数据库执行危险的sed操作。

答案 2 :(得分:0)

TL; DR

直接解决方案

#!/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