Conteúdo compartilhado, mas “atualizável” através do site principal

4

Eu tenho feito muita pesquisa na semana passada, e não consegui encontrar uma resposta sólida que corrija o meu problema. Então, decidi vir aqui perguntar se alguém sabe como ajudar com o meu problema.

Vou trabalhar em um projeto usando o WordPress Multisite que permitirá que os usuários se registrem em um site e possam remarcar o conteúdo que nós iremos fornecer a eles (por exemplo: a empresa que eu serei Trabalhar com tem uma enorme quantidade de informações corretor de imóveis que eles querem doar - para uma taxa - para outros corretores de imóveis e permitir-lhes marcá-lo com seu logotipo e informações de contato).

Assim, seria fácil criar um site modelo com todo o conteúdo já pré-carregado. Quando o MS cria um novo site, ele pega o modelo e cria o novo site usando o modelo.

No entanto, preciso poder modificar esse conteúdo em todos os sites. Teremos aproximadamente 50 páginas que precisam ser "compartilhadas" em todos esses sites e, se eu precisar fazer uma alteração, preciso mudar para todos os níveis. Eu tentei usar isso

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

Mas isso vinculará tudo ao site principal (o que acaba com o propósito de pagar para que o conteúdo seja marcado como seu). Eu encontrei plugins que permitem que você transmita mensagens para todos os seus sites, mas este é o conteúdo que será pré-carregado.

Com tudo isso dito, espero que alguém por aqui tenha feito isso antes e esteja disposto a compartilhar alguns conhecimentos sobre o assunto. Obrigado por dar uma olhada nisso!

EDIT # 1

Fiz minha pesquisa nos fóruns de suporte do WordPress, bem como aqui no StackExchange.

Existe uma maneira de compartilhar conteúdo entre os sites do wordpress :: Esta opção não funciona realmente para mim - eu tenho que ser capaz de cobrar por usuários para configurar seus novos sites, bem como dar-lhes a opção de adicionar seu nome de domínio ao seu site, é por isso que o Multisite é o jeito que eu acredito que preciso ir.

Re-blogging - WP MS Support Forum :: é o que eu encontrei mais maneiras de refazer o blog em todas as plataformas. Se eu precisasse postar posts para todos, seria ótimo. No entanto, isso não é o que eu gostaria de realizar.

Exatamente o que estou procurando :: Mas infelizmente não há uma resposta.

Eu fiz uma pesquisa através do WordPress Respostas de variações de "compartilhamento de conteúdo multi-site" e não encontrei nada (além de # 3) que pertencia ao meu tópico (ou o que eu estou procurando em geral)

EDIT # 2

Então, depois de fazer mais pesquisas ontem, encontrei Transmissão ThreeWP . Acontece que faz muito do que é realmente necessário, mas se escondeu durante meus primeiros dias de pesquisa. Ele permite que você transmita páginas por todos os subsites, além de enviar atualizações para essas páginas também. Impressionante! Então, surge uma nova questão. Meu cliente não quer que os usuários finais editem seu conteúdo (direitos autorais e legais). Então, eu escrevi um código que automaticamente anexa algum JS ao topo da Edit Page no 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');

Basicamente, quando o post.php é carregado dentro do painel de administração, ele verifica se a página atual que está sendo editada é uma página que foi conectada via Broadcasting. Se tiver sido conectado, o JS será carregado e removerá todos os elementos dessa página, substituindo-os por um aviso. O usuário final nunca verá o conteúdo no editor nem poderá atualizar a página.

Isso está funcionando bem. Se é isso que eu tenho que fazer, isso é ótimo - é a melhor solução que eu já encontrei. O que eu adoraria fazer seria assumir o controle da página principal wp-admin / edit.php? Post_type = page (é aqui que o painel de administração lista todos as páginas disponíveis para edição). Seria ótimo interceptar uma ação do WP quando estiver fazendo essa lista e remover páginas específicas enquanto estiver criando essa lista. Ainda fazendo pesquisas sobre isso para ver se isso é possível. Eu só queria atualizar o meu progresso aqui, caso alguém tenha uma palavra de conselho, ou na estrada, se alguém está se deparando com esse mesmo problema.

por Chris LaFay 16.02.2013 / 22:54

1 resposta

1

Você pode atualizar os sub sites quando o site principal for atualizado. Supondo que seus IDs de postagem para o conteúdo duplicado permaneçam os mesmos que o mesmo post no site principal, você pode escrever um plug-in que é executado apenas no site principal e a cada atualização, os sub-sites são atualizados

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
}

OBSERVAÇÃO : este é apenas um esqueleto para o código, como foi comentado abaixo, talvez você não queira duplicar revisões, salvamentos automáticos ou algum conteúdo específico que deve ser exibido apenas no site principal. Outra coisa omitida aqui é o tratamento da exclusão de postagens.

Você precisará do mesmo tipo de código para sincronizar categorias, tags e metadados. Para manter as imagens sincronizadas, a maneira mais fácil é ter um link simbólico do diretório de upload dos sub sites para o diretório de upload do site principal.

Você precisa analisar o desempenho desse tipo de código para que ele não atinja o limite de tempo do php, os limites de memória ou apenas a espera irritante até que o salvamento seja concluído, portanto, talvez seja necessário recodificá-lo para usar o agendamento. eventos que atualizam apenas alguns blogs de uma vez e acionam outro evento para continuar atualizando os outros.

    
por Mark Kaplun 17.02.2013 / 06:15