Contenido compartido pero "Actualizable" a través del sitio principal

4

La última semana he investigado bastante y no he podido encontrar una respuesta sólida que solucione mi problema. Entonces, decidí venir aquí para preguntar si alguien sabe cómo ayudarme con mi problema.

Voy a trabajar en un proyecto utilizando WordPress Multisite que permitirá a los usuarios registrarse en un sitio y poder volver a calificar el contenido que les daremos como propios (es decir, la empresa que seré trabajar con tiene una gran cantidad de información de agentes de bienes raíces que ellos quieren regalar, a cambio de una tarifa, a otros agentes de bienes raíces y les permite marcarlos con su logotipo e información de contacto).

Por lo tanto, sería fácil crear un sitio de plantilla con todo el contenido ya cargado. Cuando MS crea un nuevo sitio, toma la plantilla y crea el nuevo sitio utilizando la plantilla.

Sin embargo, necesito poder modificar este contenido en todos los sitios. Tendremos aproximadamente 50 páginas que deben ser "compartidas" en todos estos sitios, y si necesito hacer un cambio, debo hacerlo en todos los ámbitos. He intentado usar esto

<?php switch_to_blog(1); ?>
Some code that displays the menu of the Main Blog
<?php restore_current_blog(); ?>

Pero eso vinculará todo con el sitio principal (lo que anula el propósito de pagar para que el contenido se califique como propio). He encontrado complementos que te permiten transmitir publicaciones a todos tus sitios, pero este es un contenido que se cargará previamente.

Habiendo dicho todo esto, espero que alguien por aquí haya hecho esto antes y esté dispuesto a compartir algunos conocimientos sobre el tema. ¡Gracias por echar un vistazo a esto!

EDITAR # 1

He realizado mi investigación a través de los foros de soporte de WordPress, así como aquí en StackExchange.

¿Hay una manera de compartir contenido entre los sitios de wordpress : esta opción realmente no funciona para mí: tengo que poder cobrar a los usuarios para que configuren sus nuevos sitios, así como darles la opción de agregar su nombre de dominio a su sitio. Es por eso que Multisite es la forma en que creo que debo ir.

Re-Blogging - Foro de soporte de WP MS :: Este Es lo que más he encontrado: formas de re-blogear el contenido en todas las plataformas. Si tuviera que lanzar publicaciones para todos, sería genial. Sin embargo, esto no es lo que me gustaría lograr.

Exactamente lo que estoy buscando :: Pero lamentablemente no hay una respuesta.

Hice una búsqueda a través de WordPress Respuestas de variaciones de "contenido compartido en varios sitios" y no encontré nada (excepto el # 3) que se relacionara con mi tema (o lo que estoy buscando en general)

EDIT # 2

Así que, después de investigar un poco más ayer, encontré ThreeWP Broadcast . Sucede que hace bastante de lo que realmente se necesita, pero se ocultó durante mis primeros días de investigación. Le permite transmitir páginas a través de todos los subsitios, así como enviar actualizaciones a esas páginas también. ¡Increíble! Entonces, surge una nueva pregunta. Mi cliente no quiere que los usuarios finales editen su contenido (derechos de autor y razones legales). Entonces, escribí un código que automáticamente agrega algunos JS a la parte superior de la página de edición en el backend:

function hidePublishingNow() {
global $blog_id, $wpdb;
$prefix = "ssr_";


if(is_super_admin()) {}
else {



    $page = $_GET['post'];
    $pageFound = false;


    if($page > 0 && isset($blog_id)) {
        $sql = "SELECT * FROM ssr__3wp_broadcast_broadcastdata WHERE blog_id = $blog_id";
        $results = $wpdb->get_results($sql, "ARRAY_A");

        foreach($results as $r) {
            if($r['post_id'] == $page) { $pageFound = true; }
            else {}
        }

        if($pageFound == true) {
            wp_enqueue_script(
                'hide-publishing',
                get_template_directory_uri() . '/js/removePublishing.js',
                array('jquery')
            );
        }
    } else {}
}

} add_action ('admin_head', 'hidePublishingNow');

Básicamente, cuando se carga post.php dentro del panel de administración, comprueba si la página actual que se está editando es una página que se ha conectado mediante Difusión. Si se ha conectado, el JS se carga y elimina todos los elementos de esa página y lo reemplaza con una advertencia. El usuario final nunca verá el contenido en el editor ni podrá actualizar la página.

Eso está funcionando bien. Si esto es lo que tengo que hacer, es genial, es la mejor solución que he encontrado hasta ahora. Lo que me encantaría hacer sería tomar el control de la página principal wp-admin / edit.php? Post_type = page (aquí es donde el panel de administración muestra todos los las páginas disponibles para su edición). Sería genial interceptar una acción WP cuando está haciendo esa lista y eliminar páginas específicas mientras está creando esa lista. Sigo investigando para ver si eso es posible. Solo quería actualizar mi progreso aquí en caso de que alguien tenga un consejo, o más adelante, si alguien más se encuentra con este mismo problema.

pregunta Chris LaFay 16.02.2013 - 22:54

1 respuesta

1

Puede actualizar los sub sitios cuando se actualiza el sitio principal. Suponiendo que sus ID de publicación para el contenido duplicado sigan siendo las mismas que en el sitio principal, puede escribir un complemento que se ejecute solo en el sitio principal y con cada actualización de guardar los sitios secundarios

add_action('save_post','wase87206_broadcast');

function wase87206_broadcast($post_id) {
  $mainurl = get_option('siteurl');
  $post = get_post($ost_id);
  $blogs = get ids of all valid sub sites
  foreach ($blogs as $blogid) {
    switch_to_blog($blogid);
    $siteurl = get_option('siteurl');
    $post->post_content = str_replace($mainurl,$siteurl,$post->post_content); // fix links
    wp_update_post($post);
  }
  switch_to_blog(1); // set context back to main site
}

NOTA : esto es solo un esqueleto del código, como se comentó a continuación, es posible que no desee duplicar las revisiones, los guardados automáticos o algún contenido específico que solo se muestre en el sitio principal. Otra cosa que se omite aquí es el manejo de la eliminación posterior.

Necesitará el mismo tipo de código para sincronizar categorías, etiquetas y metadatos. para mantener las imágenes sincronizadas, la forma más fácil es tener un enlace simbólico desde el directorio de carga de los sub sitios al directorio de carga del sitio principal.

Debe observar el rendimiento de este tipo de código para que no se ejecute en el límite de tiempo de php, en los límites de memoria, o simplemente espere hasta que se complete el proceso de guardado, por lo que es posible que tenga que volver a codificarlo para usarlo. eventos que actualizan solo algunos de los blogs a la vez y disparan otro evento para continuar actualizando los demás.

    
respondido por el Mark Kaplun 17.02.2013 - 06:15

Lea otras preguntas en las etiquetas