我正在运行多站点,每个子站点使用相同的自定义主题。我正在使用NHP选项上传徽标,并在该主题中更改联系人页面信息。
我想在主站点中添加一个站点列表页面(使用不同的主题),并在列表中的名称旁边显示每个子站点的徽标。
获取网站列表很好-没有问题,但就我的一生而言,我不知道如何显示徽标。
数据存储在每个站点选项表中的序列化数组中,选项名称为“nhp\\U opts”。
数据如下所示:
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";}}
我拼凑的代码是:
<?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;
}?>
我得到的只是Array()-重复了很多次。
我对直接使用数据库不太熟悉,所以我对它不起作用并不感到意外!
我已经花了几天的时间来解决这个问题-如果有任何帮助,我将不胜感激!谢谢
最合适的回答,由SO网友:Samia Ruponti 整理而成
这可能是一个迟到的答复,但我希望这段代码将帮助您和其他人解决这个问题。
<?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\');
}
?>
现在,您可以使用img标记并循环使用它来获得您的选项,出于某种目的,当前站点选项在sql中被省略,如果您想在结果中也包括当前站点,您可以忽略
AND blog_id != 1
这一行来自sql。
我希望这也能帮助其他人。