Multisite - Recupere a mesma opção de tema de todos os sites da rede

4

Estou executando multisite com cada subsite usando o mesmo tema personalizado. Estou usando o NHP Options para fazer o upload do logotipo e as alterações das informações da página de contato nesse tema.

Gostaria de adicionar uma página de lista de sites ao site principal (que está usando um tema diferente) e ter cada logotipo de subsites exibido ao lado de seu nome na lista.

Obter a lista de sites foi bom - sem problemas, mas para a vida de mim não consigo descobrir como obter os logotipos para mostrar.

Os dados são armazenados em uma matriz serializada em cada tabela de opções de sites - com o option_name de 'nhp_opts'.

Os dados são assim:

    a:5:{s:8:"last_tab";s:1:"0";i:19;s:59:"http://_PATH_TO_LOGO.png";i:20;
    s:34:"Test Street,Testing,Co. Test";i:21;s:16:"(000) 123 456789";s:10:"multi_text";
    a:4:{i:0;s:21:"Mon - Fri 9.30 - 6.00";i:1;s:18:"Sat - 10.00 - 6.00";
    i:2;s:18:"Sun - 12.00 - 5.00";i:3;s:22:"Bank Holidays - Closed";}}

e o código que eu montei é o seguinte:

    <?php global $wpdb;
            $logos = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->options WHERE option_name = nhp_opts  "));
                foreach($logos as $logo){
                $thedata = $logos;
                $thedata = unserialize($thedata);
                echo $thedata;

                }?>

Tudo que recebo é Array () - repetido várias vezes.

Eu não estou muito familiarizado com o trabalho direto com o banco de dados - então eu não estou muito surpreso que isso não funcionou!

Eu passei alguns dias agora confundindo este aqui - qualquer ajuda seria muito apreciada! Obrigado!

    
por Yelper 03.12.2012 / 14:13

2 respostas

1

pode ser uma resposta tardia, mas espero que este código ajude você e outros a resolver esse problema.

 <?php
  global $wpdb;
  $blogs = $wpdb->get_results("SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' AND blog_id != 1 ");

  $sites = array();

 foreach ($blogs as $blog) {

 $sites[$blog->blog_id] = get_blog_option($blog->blog_id, 'nhp_opts');

}
  ?>

agora você pode usar img tag e loop através disso para obter a sua opção, para um propósito a opção atual do site é omitida do sql, se você quiser incluir o site atual no seu resultado, você também pode ignorar AND blog_id != 1 desta linha do sql.

Espero que isso ajude os outros também.

    
por Samia Ruponti 02.01.2013 / 10:46
0

Usar get_option() fará a falta de serialização para você e será muito mais fácil.

<?php

global $wpdb;

$sites = $wpdb -> get_results($wpdb -> prepare("SELECT * FROM wp_blogs ORDER BY blog_id"));

foreach ($sites as $site) {
    switch_to_blog( $site);
    echo get_option('nhp_opts');
    restore_current_blog();
}

Acho que pode haver uma maneira melhor de fazer isso no 3.5, mas não consigo encontrar o ticket no momento.

    
por developdaly 03.12.2012 / 14:39

Tags