Red de conocimiento informático - Material del sitio web - Cómo sincronizar completamente dos sitios de WordPress

Cómo sincronizar completamente dos sitios de WordPress

Como webmaster de nivel camarón, en realidad soy un novato que no entiende de codificación. Dado que mi sitio es un pequeño host de tubería de agua y la estabilidad es difícil de garantizar, también quiero crear uno. bajo las sugerencias de muchos visitantes, el sitio espejo de contenido, de modo que cuando el host del sitio principal esté en mantenimiento, habrá un sitio de respaldo para que los visitantes lo visiten.

En primer lugar, quería tener una base de datos común que pudiera ser utilizada por ambos sitios, pero después de que Baidu verificara la información, descubrí que esto no parecía aplicable a la creación de sitios web de host virtual.

Hasta que encuentre el siguiente código, podrá darse cuenta de que cuando el sitio de origen publique un artículo, también se publicará automáticamente en el sitio espejo.

En el primer paso, cree un archivo php llamado post.php en el directorio raíz del sitio espejo. Contenido del código: //El siguiente es el texto del código...

lt;?php?

//Recepción del artículo?

define('WP_USE_THEMES',?false);?

require_once("wp-load.php ");?

$key='123456';?//Establece la clave para iniciar la API

if($_POST['key']==$key){ ?

$categorys=explode(',',$_POST['categoría']);?

$category=array();?

para ($x=1; $xlt;count($categorías);$x )?{?

$categoría[$x-1]=get_cat_ID($categorías[$x]);?

} ?

$info?=?array(?

'post_title'?=gt;?$_POST['título'],?

'post_content' ?=gt;?$_POST['content'],?

'post_status'?=gt;?'publish',?

'post_author' ?=gt;?1 ,?//El autor?ID del artículo publicado, 1?¿es el administrador?

'post_date'?=gt;?$_POST['date'],?

'tags_input '?=gt;?$_POST['etiquetas'],?

'post_category'?=gt;?$categoría,?

' post_type'?=gt;?$ _POST['tipo']?

);?

wp_insert_post(?$info?);?

}

Segundo paso 1: agregue el código descargado antes del último ?gt; del archivo funciones.php del tema del sitio web principal, configure la clave y modifique la dirección API.

//Push del artículo

add_action('publish_post',?'fanly_sync_post');?//¿Hook, ejecutado cuando se publica el artículo?

function?fanly_sync_post($post_ID)? { ?

$key='123456';?//Ingrese la clave que configuró?

$url='/post.php';//¿La dirección API es para aceptar? El sitio de los datos

$post_info?=?get_post($post_ID);?

if?(?$post_info-gt;post_status?==?'publish'?amp ; amp;?$_POST['original_post_status']?!=?'publish'?)?{?

$title=$_POST['post_title'];?

$ contenido =$_POST['contenido'];?

$fecha=$_POST['aa'].'-'.$_POST['mm'].'-'.$_POST['jj ' ].'?'.$_POST['hh'].':'.$_POST['mn'].':'.$_POST['ss'];?

$categoría= ' ';?

for($x=1;$xlt;count($_POST['post_category']);$x )?{?

$categoría.=' , '.get_cat_name($_POST['post_category'][$x]);?

}?

$type=$_POST['post_type'];?

$tags=str_replace(',',',',$_POST['tax_input']['post_tag']);?

if($_POST['newtag'][' post_tag ']){?

$tags.=','.str_replace(',',',',$_POST['newtag']['post_tag']);?

}?

$data?=?'key='.$key.'amp;title='.$title.'amp;content='.$content.'amp;date= ' .$date.'amp;category='.$category.'amp;type='.$type.'amp;tags='.$tags;?

$ch?=?curl_init? ( ); ?//cURL? simular ?POST?

curl_setopt?(?$ch, ?CURLOPT_RETURNTRANSFER, ?TRUE?);?

curl_setopt? (?$ch,?CURLOPT_POSTFIELDS,?$datos?);?

curl_setopt?(?$ch,?CURLOPT_URL,?$ url?);?

curl_setopt?(? $ch,?CURLOPT_SSL_VERIFYPEER,?FALSE);?

$ret?=?curl_exec?(?$ch?);?

>curl_close?(?$ch?);?

return?$ret;?

}?

}

De esta manera Vamos, después de que se publique un artículo en el sitio principal, se publicará un artículo en el sitio espejo, pero también habrá algunas situaciones inesperadas, por ejemplo, no se publicará de inmediato, pero mostrará que está planeado. Normalmente se publicará después de unos minutos, pero también habrá errores de publicación. Debe seleccionar el artículo que no se pudo publicar en la administración de artículos en segundo plano, cambiar el estado a publicado y actualizarlo.

Solución a algunas situaciones inesperadas:

Problema 1. Después de actualizar el tema, se reemplazará el código funciones.php. La duplicación de contenido implementada mediante el método anterior requiere modificar el código funciones.php cada vez que se actualiza el tema, lo que causará problemas.

Entonces existe la siguiente solución, el código es el siguiente: lt;?php

/*

Plugin?Name:?Small plug-in

Descripción :?Agregar puntos al tema Funciones pequeñas

Autor:?Yunluo

*/

//Artículo push

add_action(' publicar_post',?'fanly_sync_post ');?//¿Hook, ejecutado cuando se publica el artículo?

function?fanly_sync_post($post_ID)?{?

$key='123456 ';?//Ingrese su clave de configuración?

$url='/post.php'; //¿La dirección API? es el sitio que acepta datos

$post_info?=? get_post($post_ID );?

if?(?$post_info-gt;post_status?==?'publish'?amp;amp;?$_POST['original_post_status']?!=?'publish '?)? {?

$title=$_POST['post_title'];?

$content=$_POST['content'];?

$fecha= $_POST['aa'].'-'.$_POST['mm'].'-'.$_POST['jj'].'?'.$_POST['hh'].': '.$_POST ['mn'].':'.$_POST['ss'];?

$category='';?

for($x=1 ;$xlt; count($_POST['post_category']);$x )?{?

$category.=','.get_cat_name($_POST['post_category'][$x]) ;?

p>

}?

$type=$_POST['post_type'];?

$tags=str_replace(',',', ',$_POST[' tax_input']['post_tag']);?

if($_POST['newtag']['post_tag']){?

$etiquetas .=','. str_replace(',',',',$_POST['newtag']['post_tag']);?

}?

$datos? =?'key=' .$key.'amp; title='.$title.'amp; contenido='.$content.'amp; fecha='.$fecha.'amp; 'amp; tipo=' .$tipo.'amp; etiquetas='.$etiquetas;?

$ch?=?curl_init?();?//cURL?Simular?POST?

curl_setopt?(?$ch, ?CURLOPT_RETURNTRANSFER, ?TRUE?); ?

curl_setopt?(?$ch, ?CURLOPT_POST, ?TRUE?); curl_setopt?(?$ch ,?CURLOPT_POSTFIELDS,?$datos?);?

curl_setopt?(?$ch,?C

URLOPT_URL,?$url?);?

curl_setopt?(?$ch,?CURLOPT_SSL_VERIFYPEER,?FALSE);?

$ret?=?curl_exec?(?$ch? );?

curl_close?(?$ch?);?

return?$ret;?

}?

} gt;

Copie el código anterior, es mejor usar el Bloc de notas y otras herramientas para guardarlo como un archivo php, empaquetarlo en un archivo zip, cargarlo en el fondo de instalación del complemento de WordPress, instalarlo. y actívalo.

De esta manera, existe en forma de complemento y ya no tendrá ningún impacto después de que se actualice el tema.

Pregunta 2. Algunos editores de temas admiten códigos cortos como la visibilidad de contraseñas y la visibilidad de pagos. Sin embargo, el modo de edición y el modo de salida del código corto serán diferentes. El contenido del sitio espejo estará en la salida. Modo Hay excepciones que pueden generarse.

Mi solución también es utilizar un pequeño complemento para modificar automáticamente estos códigos. El código es el siguiente: lt;?php

/*

Plugin?Nombre:?Pequeño complemento

Descripción:?Agregue algunas funciones pequeñas a el tema

Autor:?Yunluo

*/

//Reemplazo de texto de contenido

función?wpdaxue_replace_text($text){

$replace?=?array(

//?'Texto original'?=gt;?'Reemplazar con estos'

'\"20\" ]'?=gt ;?'"20"]',

'\"10\"]'?=gt;?'"10"]',

'\ "50\"] '?=gt;?'"50"]'

);

$text?=?str_replace(array_keys($reemplazar),?$reemplazar, ?$texto);

return?$texto;

}

add_filter('the_content',?'wpdaxue_replace_text');?//Texto

add_filter('the_excerpt',?'wpdaxue_replace_text');?//Resumen

add_filter('comment_text',?'wpdaxue_replace_text');?//Comentario gt;

Aquí, en este artículo, todos los códigos utilizados son proporcionados por blogueros todopoderosos. Acabo de realizar una integración efectiva de ellos para satisfacer mis necesidades. ¡Me gustaría agradecer a los blogueros que comparten el espíritu por su arduo trabajo!

Se permite compartir experiencias y reimprimir, pero no se permite modificar el contenido, ¡gracias!