Php foreach需要wordpress模板中的数组
好的,我在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 这个问题是在这些基础上解决的 但我不明白最后一篇文章是关于什么的。这家伙发布了一堆解决问题的随机代码。他没
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
}
}