Controlar programáticamente la visibilidad del motor de búsqueda de WordPress

4 minutos de lectura

Estoy escribiendo un script simple y un complemento para mover un sitio de WordPress “Staging” a un sitio de producción. El enfoque es simple: volcado de mysql, verifique todo en el control de fuente, ajuste el nombre de la base de datos, restaure en producción.

El único problema con el que me he encontrado es que no sé cómo alternar la configuración de Visibilidad del motor de búsqueda en Configuración > Lectura. Me gustaría que los motores de búsqueda ignoraran la puesta en escena, pero no sobrescribieran esa configuración en producción (después de la restauración).

¿Alguna idea sobre cómo hacer esto? Rápido y sucio (usar sed/buscar y reemplazar en el archivo de volcado de sql, etc.) está bien para mí.

Gracias

Estado de visibilidad del motor de búsqueda de WordPress almacenado en la opción de tabla con nombre de opción 'blog_public'con valor '1' si el sitio es visible por el motor de búsqueda, y '0' si el sitio no es visible por el motor de búsqueda,

Entonces, tal vez pueda alternarlo usando update_option de la función wordpress,

update_option('blog_public', '1');

o simplemente reemplazarlo directamente en la base de datos

avatar de usuario
fred2

No usaría la configuración de visibilidad del sitio de WordPress para esto en absoluto.

Sugeriría usar algunos/todos estos:

  1. Use robots.txt en su sitio de prueba (solo recuerde no copiar para vivir)
   User-agent: *
   Disallow: /

(Pero tienes que confiar en que los motores de búsqueda lo respeten, como lo haces con la configuración de WordPress)

  1. Proteja con contraseña el sitio de ensayo usando algo como .htaccess y .htpasswd (suponiendo que utilice un servidor Apache).

  2. Usar .htaccess para limitar el acceso a su sitio de prueba desde un conjunto pequeño de direcciones IP.

De esa manera, realiza los cambios una vez y no necesita realizar una operación sed peligrosa en su base de datos cada vez que realiza una sincronización para vivir.

  • ¿Por qué no usar la configuración de visibilidad del sitio de WordPress? ¿Para qué es entonces?

    – Peter Kionga-Kamau

    30 de diciembre de 2019 a las 17:27

  • Porque en la pregunta del OP, copiará con frecuencia la base de datos en una instancia en vivo y no quiere seguir sobrescribiendo la configuración de visibilidad.

    – fred2

    31 de diciembre de 2019 a las 3:00

  • Es posible que esté haciendo suposiciones sobre el caso de uso que no son necesariamente precisas. Están escribiendo un script, tiene mucho sentido automatizar la configuración según el servidor detectado; la secuencia de comandos hace que sea irrelevante si se copia la base de datos; presumiblemente, también están copiando el sistema de archivos, por lo que la introducción de un archivo robots.txt más complicado de administrar no resuelve ningún problema de sincronización (solo una secuencia de comandos que puede detectar el servidor servirá este).

    – Peter Kionga-Kamau

    1 de enero de 2020 a las 0:01

  • Por supuesto. Realice una operación de base de datos automatizada cada vez que sincroniza el sitio. O haga un git ignore una vez en el archivo robots.txt. Hay más de una forma de despellejar a un gato.

    – fred2

    4 de enero de 2020 a las 15:56


TL;DR

Solución sencilla

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

Versión larga

Estoy construyendo un proyecto similar al tuyo. Con el script anterior, puede generar una nueva base de datos de producción donde puede establecer el valor de visibilidad del motor de búsqueda de WordPress.

Aporte

Solo necesita un archivo de volcado generado por mysqldump o un archivo de copia de seguridad de phpMyAdmin

database.staging.sql

Producción

Después de ejecutar el script, podrá tener una base de datos que ha sido buscada y reemplazada.

database.production.sql

¿Ha sido útil esta solución?