Php foreach需要wordpress模板中的数组

Php foreach需要wordpress模板中的数组,php,wordpress,Php,Wordpress,好的,我在wordpress中安装了一个主题,它返回了一些错误 Warning: Invalid argument supplied for foreach() in /home/mvprop/public_html/wp-content/themes/yoo_vox_wp/warp/systems/wordpress.3.0/helpers/system.php on line 339 这个问题是在这些基础上解决的 但我不明白最后一篇文章是关于什么的。这家伙发布了一堆解决问题的随机代码。他没

好的,我在wordpress中安装了一个主题,它返回了一些错误

Warning: Invalid argument supplied for foreach() in /home/mvprop/public_html/wp-content/themes/yoo_vox_wp/warp/systems/wordpress.3.0/helpers/system.php on line 339
这个问题是在这些基础上解决的

但我不明白最后一篇文章是关于什么的。这家伙发布了一堆解决问题的随机代码。他没有具体说明它从哪里来或放在哪里。只是粘贴似乎与任何事情都无关的代码

文件末尾的第334行

function getWidgets($position = null) {

    if (empty($this->widgets)) {
        foreach (wp_get_sidebars_widgets() as $pos => $ids) {
            $this->widgets[$pos] = array();
            foreach ($ids as $id) {
                $this->widgets[$pos][$id] = $this->getWidget($id);
            }
        }
    }

    if (!is_null($position)) {
        return isset($this->widgets[$position]) ? $this->widgets[$position] : array();
    }

    return $this->widgets;
}

/*
    Function: displayWidget
        Checks if a widget should be displayed

    Returns:
        Boolean
*/
function displayWidget($widget) {
    if (!isset($widget->options['display']) || in_array('*', $widget->options['display'])) return true;

    foreach ($this->getQuery() as $q) {
        if (in_array($q, $widget->options['display'])) {
            return true;
        }
    }

    return false;
}

/*
    Function: overrideConfig
        Overrides default config based on page

    Returns:
        Void
*/
function overrideConfig() {
    if (!count($this->config_overrides)) return;

    foreach ($this->getQuery() as $q) {
        if (isset($this->config_overrides[$q])) {
            $this->warp->config->parseString($this->config_overrides[$q]);
        }
    }
}

/*
    Function: isBlog

    Returns:
        Boolean
*/
function isBlog() {
    return true;
}

/*
    Function: isPreview
        Checks for default widgets in theme preview 

    Returns:
        Boolean
*/
function isPreview($position) {

    // preview postions
    $positions = array('logo', 'right');

    return is_preview() && in_array($position, $positions);
}

/*
    Function: ajaxSearch
        Ajax search callback

    Returns:
        String
*/
function ajaxSearch(){
    global $wp_query;

    $result = array('results' => array());
    $query  = isset($_REQUEST['s']) ? $_REQUEST['s']:"";

    if (strlen($query)>=3) {

        $wp_query->query_vars['s'] = $query;
        $wp_query->is_search = true;

        foreach ($wp_query->get_posts() as $post) {

            $content = !empty($post->post_excerpt) ? strip_tags(do_shortcode($post->post_excerpt)) : strip_tags(do_shortcode($post->post_content));

            if (strlen($content) > 255) {
                $content = substr($content, 0, 254).'...';
            }

            $result['results'][] = array(
                'title' => $post->post_title,
                'text'  => $content,
                'url'   => get_permalink($post->ID)
            );
        }
    }

    die(json_encode($result));
}

/*
    Function: _adminInit
        Admin init actions

    Returns:
        Void
*/
function _adminInit() {

    if ((defined('DOING_AJAX') && DOING_AJAX) && isset($_POST['warp-ajax-save'])) {

        // update option values
        foreach ($_POST as $option => $value) {
            if (preg_match('/^(warp_|'.preg_quote($this->prefix, '/').')/', $option)) {
                update_option($option, $value);
            }
        }

        die();
    }

    wp_enqueue_script('warp-admin', rtrim(get_bloginfo('template_url'),'/').'/warp/systems/wordpress.3.0/js/wp-admin.js', false, '1.0');
    add_action('wp_ajax_save_nav_settings', array($this,'_save_nav_settings'));
    add_action('wp_ajax_get_nav_settings', array($this,'_get_nav_settings'));
}

/*
    Function: _adminHead
        Admin head actions

    Returns:
        Void
*/
function _adminHead() {

    // init vars
    $path =& $this->getHelper('path'); 

    $head[] = '<link rel="stylesheet" href="'.$path->url('warp:systems/wordpress.3.0/css/admin.css').'" type="text/css" />';
    $head[] = '<script type="text/javascript" src="'.$path->url('warp:systems/wordpress.3.0/js/admin.js').'"></script>';

    echo implode("\n", $head);
}

/*
    Function: _adminMenu
        Admin menu actions

    Returns:
        Void
*/
function _adminMenu() {

    // init vars
    $path =& $this->getHelper('path');
    $name = $this->xml->document->getElement('name');
    $icon = $path->url('warp:systems/wordpress.3.0/images/yoo_icon_16.png');

    if (function_exists('add_object_page')) {
        add_object_page('', $name->data(), 8, 'warp', false, $icon);
    } else {
        add_menu_page('', $name->data(), 8, 'warp', false, $icon); 
    }

    add_submenu_page('warp', 'Theme Options', 'Theme Options', 8, 'warp', array($this, '_adminThemeOptions'));
    add_submenu_page('warp', 'Widget Options', 'Widget Options', 8, 'warp_widget', array($this, '_adminWidgetOptions'));
}

/*
    Function: _adminThemeOptions
        Render admin theme options layout

    Returns:
        Void
*/  
function _adminThemeOptions() {

    // init vars
    $path  =& $this->getHelper('path');
    $xml   =& $this->getHelper('xml');
    $http  =& $this->getHelper('http');
    $check =& $this->getHelper('checksum');

    // get warp xml
    $warp_xml = $xml->load($path->path('warp:warp.xml'), 'xml', true);

    // update check
    $update = null;
    if ($url = $warp_xml->document->getElement('updateUrl')) {

        // get template info
        $template = get_template();
        $version  = $this->xml->document->getElement('version');
        $url      = sprintf('%s?application=%s&version=%s&format=raw', $url->data(), $template, $version->data());

        // only check once a day 
        if (get_option($this->prefix.'update_check') != date('Y-m-d').' '.$version->data()) {
            if ($request = $http->get($url)) {
                update_option($this->prefix.'update_check', date('Y-m-d').' '.$version->data());
                update_option($this->prefix.'update_data', $request['body']);
            }
        }

        // decode update response
        $update = json_decode(get_option($this->prefix.'update_data'));
    }

    // verify theme files
    if (($checksums = $path->path('template:checksums')) && filesize($checksums)) {
        $check->verify($path->path('template:'), $log);
    } else {
        $log = false;
    }

    echo $this->warp->template->render('admin/theme_options', array('xml' => $this->xml, 'warp_xml' => $warp_xml, 'update' => $update, 'checklog' => $log));
}

/*
    Function: _adminWidgetOptions
        Render admin widget options layout

    Returns:
        Void
*/  
function _adminWidgetOptions() {

    // get position settings
    $position_settings = $this->warp->config->get('warp.positions');

    // get module settings
    $module_settings = array();
    $settings = $this->xml->document->getElement('modulesettings');

    foreach ($settings->children() as $setting) {
        $module_settings[$setting->attributes('name')] = $setting;
    }

    echo $this->warp->template->render('admin/widget_options', compact('position_settings', 'module_settings'));
}

/*
    Function: getMenuItemOptions
        Retrieve menu by id

    Parameters:
        $id - Menu Item ID

    Returns:
        Array
*/
function getMenuItemOptions($id) {

    $menu_settings = array(
        'columns'     => 1,
        'columnwidth' => -1,
        'image'       => ''
    );

    if (isset($this->menu_item_options[$id])) {
        $menu_settings = array_merge($menu_settings, $this->menu_item_options[$id]);
    }

    return $menu_settings;
}


/*
    Function: _save_nav_settings
        Saves menu item settings

    Returns:
        Void
*/  
function _save_nav_settings() {

    if (isset($_POST['menu-item'])) {

        $menu_item_settings = $this->menu_item_options;

        foreach ($_POST['menu-item'] as $itemId=>$settings){
            $menu_item_settings[$itemId] = $settings;
        }

        update_option($this->prefix.'menu-items', $menu_item_settings);
        $this->menu_item_options = $menu_item_settings;
    }

    die();
}

/*
    Function: _get_nav_settings
        Returns menu item settings as json

    Returns:
        Boolean
*/
function _get_nav_settings() {
    die(json_encode($this->menu_item_options));
    }

}

    /*
        Function: mb_strpos
            mb_strpos function for servers not using the multibyte string extension
    */
    if (!function_exists('mb_strpos')) {
        function mb_strpos($haystack, $needle, $offset = 0) {
            return strpos($haystack, $needle, $offset);
        }
    }
函数getWidgets($position=null){ if(空($this->widgets)){ foreach(wp_get_sidebars_widgets()作为$pos=>$id){ $this->widgets[$pos]=array(); foreach($id作为$id){ $this->widgets[$pos][$id]=$this->getWidget($id); } } } 如果(!为空($position)){ 返回isset($this->widgets[$position])?$this->widgets[$position]:数组(); } 返回$this->widgets; } /* 功能:displayWidget 检查是否应显示小部件 返回: 布尔值 */ 函数displayWidget($widget){ 如果(!isset($widget->options['display'])| | in_数组('*',$widget->options['display'])返回true; foreach($this->getQuery()作为$q){ if(在数组中($q,$widget->options['display'])){ 返回true; } } 返回false; } /* 功能:overrideConfig 基于页面覆盖默认配置 返回: 无效的 */ 函数overrideConfig(){ 如果(!count($this->config_overrides))返回; foreach($this->getQuery()作为$q){ if(设置($this->config_覆盖[$q])){ $this->warp->config->parseString($this->config_覆盖[$q]); } } } /* 功能:isBlog 返回: 布尔值 */ 函数isBlog(){ 返回true; } /* 职能:isPreview 检查主题预览中的默认小部件 返回: 布尔值 */ 职能审查(职位){ //预览帖子 $positions=数组('logo','right'); 返回为数组($position,$positions)中的\u preview(); } /* 功能:ajaxSearch Ajax搜索回调 返回: 一串 */ 函数ajaxSearch(){ 全局$wp_查询; $result=array('results'=>array()); $query=isset($_请求['s'])?$_请求['s']:“”; 如果(strlen($query)>=3){ $wp\u query->query\u vars['s']=$query; $wp\u query->is\u search=true; foreach($wp\u query->get\u posts()作为$post){ $content=!empty($post->post_-extract)?strip_标记(do_-shortcode($post->post_-extract)):strip_标记(do_-shortcode($post->post_-content)); 如果(strlen($content)>255){ $content=substr($content,0254)。“…”; } $result['results'][]=数组( 'title'=>$post->post\u title, “文本”=>$content, 'url'=>get\u permalink($post->ID) ); } } die(json_encode($result)); } /* 函数:_adminInit 管理初始化操作 返回: 无效的 */ 函数_adminInit(){ if((已定义('DOING_AJAX')&&DOING_AJAX)&&isset($\u POST['warp-AJAX-save'])){ //更新选项值 foreach($\作为$option发布=>$value){ if(preg_match('/^(warp|'.preg_quote($this->prefix'/')。)/',$option)){ 更新选项($option$value); } } 模具(); } wp_enqueue_script('warp-admin',rtrim(get_bloginfo('template_url'),'/')。/warp/systems/wordpress.3.0/js/wp admin.js',false,'1.0'); 添加操作('wp\u ajax\u save\u nav\u settings',数组($this,''save\u nav\u settings'); 添加动作('wp_ajax_get_nav_settings',数组($this,'u get_nav_settings')); } /* 功能:_adminHead 行政首长行动 返回: 无效的 */ 函数_adminHead(){ //初始化变量 $path=&$this->getHelper('path'); $head[]=''; $head[]=''; 回波内爆(“\n”,$head); } /* 功能:_adminMenu 管理菜单操作 返回: 无效的 */ 函数_adminMenu(){ //初始化变量 $path=&$this->getHelper('path'); $name=$this->xml->document->getElement('name'); $icon=$path->url('warp:systems/wordpress.3.0/images/yoo_icon_16.png'); 如果(函数_存在('add_object_page')){ 添加对象页面(“”,$name->data(),8,'warp',false,$icon); }否则{ 添加菜单页面(“”,$name->data(),8,'warp',false,$icon); } 添加子菜单页面('warp','Theme Options','Theme Options',8','warp',array($this,'u admininthemeoptions')); 添加子菜单页面('warp','Widget Options','Widget Options',8','warp_Widget',数组('this','adminWidgetOptions'); } /* 功能:\ u管理操作 呈现管理主题选项布局 返回: 无效的 */ 函数_admininthemeoptions(){ //初始化变量 $path=&$this->getHelper('path'); $xml=&$this->getHelper('xml'); $http=&$this->getHelper('http'); $check=&$this->getHelper('checksum'); //获取扭曲xml $warp_xml=$xml->load($path->path('warp:warp.xml'),'xml',true); //更新检查 $update=null; 如果($url=$warp\uxml->document->getElement('updateUrl')){ //获取模板信息 $template=get_template(); $version=$this->xml->document->getElement('version'); $url=sprintf(“%s”应用程序=%s&version=%s&format=raw',$url->data(),$template,$version->data()); //每天只检查一次 如果(获取选项($this->prefix.update_check')!=date('Y-m-d')。$version->data()){ 如果($request=$http->get($url)){ 更新选项($this->prefix'update_check',date('Y-m-d')。$version->data()); 更新_选项($this->prefix.update_data',$request['body']); } } //解码更新响应 $update=json_decode(get_选项($this->prefix.update_data)); } //验证主题文件 if(($checksums=$path->path('模板:校验和
$var = Array();
.
. // code that may change the data type of $var
.
if (is_array($var)) {
    foreach($var as $v) {
        //code here
    }
}