Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εδω και μια εβδομάδα, παιδεύομαι με ένα site που έχω 2 χρόνια και απλά θέλω να υπάρχει. Αναβαθμίζει ο host την php, μου ξεσκίζει όλο το site. Βάζει μια επιλογή να αναβαθμίζει αυτόματα το wp και τα plugin, μου ξαναξεσκίζει όλο το site. 

 

Και σήμερα, πάω να μπώ στο site και φαίνεται μόνο η σελίδα και το menu. Δηλαδή έχουν εξαφανιστεί ΟΛΑ τα positions. Όταν πάω να μπω στο admin παίρνω λευκη σελίδα με το παρακάτω error...

 

Fatal error: Call to a member function data() on a non-object in /home/xxx/xxxx/xxxxx/wp-content/themes/yoo_spark_wp/warp/systems/wordpress.3.0/helpers/system.phpon line 509

 

 

Τι να κάνω?

 

 

To κομμάτι του κώδικα που είναι στην 509 σειρά είναι το   add_object_page('', $name->data(), 8, 'warp', false, $icon);

 

<?php
/**
* @package   Warp Theme Framework
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright  2007 - 2011 YOOtheme GmbH
* @license   YOOtheme Proprietary Use License (http://www.yootheme.com/license)
*/

/*
	Class: WarpHelperSystem
		Wordpress system helper class, provides Wordpress 3.0 Blog integration (http://wordpress.org)
*/
class WarpHelperSystem extends WarpHelper {

	/* system path */
	var $path;

	/* system url */
	var $url;

	/* cache path */
	var $cache_path;

	/* cache time */
	var $cache_time;

	/* theme prefix */
	var $prefix;

	/* theme xml */
	var $xml;

	/* query */
	var $query;

	/* widgets */
	var $widgets;
    
	/* all widget options */
	var $widget_options;
	
	/* all menu items options */
	var $menu_item_options;
	
	/* all config overrides */
	var $config_overrides;
	
	/*
		Function: Constructor
			Class Constructor.
	*/
	function __construct() {
		parent::__construct();

		// parse site url
		$urlinfo = parse_url(get_option('siteurl'));
		$url     = $urlinfo['path'];

		// init vars
		$this->path       = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', ABSPATH), '/');
		$this->url        = $url != '/' ? $url : null;
		$this->cache_path = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', get_template_directory()), '/').'/cache';
		$this->cache_time = 86400;
		$this->prefix     = get_template().'_';
		
		// set callback
		$this->callbacks['construct'][] = 'init';
	}

	/*
		Function: init
			Initialize system configuration

		Returns:
			Void
	*/
	function init() {

		// init options
        $this->widget_options    = get_option('warp_widget_options', array());
		$this->menu_item_options = get_option($this->prefix.'menu-items', array());
		$this->config_overrides  = get_option($this->prefix.'overrides', array());

		// init helpers
		$path    =& $this->getHelper('path');
		$config  =& $this->getHelper('config');
		$modules =& $this->getHelper('modules');
        $xml     =& $this->getHelper('xml');

		// set cache directory
		if (!file_exists($this->cache_path)) {
			mkdir($this->cache_path, 0755);
		}

		// set paths
		$path->register($this->path.'/wp-admin', 'admin');
		$path->register($this->path, 'site');
		$path->register($this->cache_path, 'cache');
		$path->register($path->path('warp:systems/wordpress.3.0/menus'), 'menu');
		$path->register($path->path('warp:systems/wordpress.3.0/widgets'), 'widgets');
		$path->register($path->path('template:').'/widgets', 'widgets');

		// set translations
		load_theme_textdomain('warp', $path->path('template:languages'));

		// get theme xml
		$this->xml =& $xml->load($path->path('template:template.xml'), 'xml', true);

		// get parameter
        $options = array();

        foreach ($this->xml->document->getElements('params') as $param) {
            foreach ($param->children() as $setting) {

				$name = $setting->attributes('name');
                $options[$param->attributes('group')][] = $setting;

                if ($name == 'presets') {
                    $config->set('presets', array());
                } else {
                    $config->set($name, get_option($this->prefix.$name, $setting->attributes('default')));
                }
            }
        }

        $config->set('warp.settings.theme', $options);

		// get module positions
        $options   = array();
        $positions = $this->xml->document->getElement('positions');

        foreach ($positions->children() as $pos) {

            $name = trim($pos->data());
            $options[$name] = array('configurable' => true);

            if ($pos->attributes('configurable') === '0') {
                $options[$name]['configurable'] = false;
                $options[$name]['info'] = $pos->attributes('info') ? $pos->attributes('info') : 'This position is not configurable.';
            }

            $modules->register($name);
        }

        $config->set('warp.positions', $options);

		// load widgets
		foreach ($path->dirs('widgets:') as $name) {
			if ($file = $path->path("widgets:{$name}/{$name}.php")) {
				require_once($file);
			}
		}

		// add actions
		add_action('wp_ajax_warp_search', array($this, 'ajaxSearch'));
		add_action('wp_ajax_nopriv_warp_search', array($this, 'ajaxSearch'));

		// register main menu	
		register_nav_menus(array('main_menu' => 'Main Navigation Menu'));

		// is admin or site
		if (is_admin()) {
			
			// load helper
			$this->warp->loadHelper(array('control'));
			
			// add actions
			add_action('admin_init', array($this, '_adminInit'));
		    add_action('admin_menu', array($this, '_adminMenu'));
			
			// include css/js
			if (isset($_GET['page']) && in_array($_GET['page'], array('warp', 'warp_widget'))) {
				add_action('admin_head', array($this, '_adminHead'));
			}

		} else {

			// add actions
			add_action('wp', array($this, 'overrideConfig'));

            // allow & and special html chars in menu item
            add_filter('wp_setup_nav_menu_item', create_function('$menu_item','$menu_item->title = htmlspecialchars($menu_item->title, ENT_COMPAT, "UTF-8");return $menu_item;'));

            // filter widgets that should not be displayed
			add_filter('widget_display_callback', create_function('$instance,$widget,$args','
					$warp = Warp::getInstance();
					$w = $warp->system->getWidget($widget->id);
					return $w->display ? $instance : false;
			'),10, 3);

            // remove auto-linebreaks ?
            if (!$config->get('wpautop', 1)) {
            	remove_filter('the_content', 'wpautop');
			}

			// dynamic presets ?
	        if ($config->get('allow_dynamic_preset')) {

				if (!session_id()) session_start();

				if (isset($_GET[$this->warp->preset_var])) {
					$_SESSION['_current_preset'] = preg_replace('/[^A-Z0-9-]/i', '', $_GET[$this->warp->preset_var]);
				}

				$config->set('_current_preset', isset($_SESSION['_current_preset']) ? $_SESSION['_current_preset'] : null);
	        }

			$config->set('actual_date', date('d. M Y'));
		}

	}

	/*
		Function: getQuery
			Get current query information

		Returns:
			Object
	*/
	function getQuery() {
        global $wp_query;

		// create, if not set
		if (empty($this->query)) {
			
			// init vars
	        $obj   = $wp_query->get_queried_object();
			$query = array();

			// find current page type
			foreach (array('home', 'front_page', 'archive', 'search', 'single', 'page', 'category') as $type) {
				if (call_user_func('is_'.$type)) {
					$query[] = $type;

					if ($type == 'page') {
						$query[] = 'page-'.$obj->ID;
					}

					if ($type == 'category') {
						$query[] = 'cat-'.$obj->cat_ID;
					}
				}
			}
			
			$this->query = $query;
		}

		return $this->query;
	}

	/*
		Function: getPostCount
			Retrieve current post count

		Returns:
			Int
	*/
	function getPostCount() {
		global $wp_query;
		return $wp_query->post_count;
	}

	/*
		Function: getWidget
			Retrieve a widget by id

		Parameters:
			$id - Widget ID

		Returns:
			Object
	*/
	function getWidget($id) {
		global $wp_registered_widgets;
		
	    $widget  = null;
		$options = $this->widget_options;

		if (isset($wp_registered_widgets[$id]) && ($data = $wp_registered_widgets[$id])) {
			$widget = new stdClass();
			
			foreach (array('id', 'name', 'classname', 'description') as $var) {
				$widget->$var = isset($data[$var]) ? $data[$var] : null;
			}

			if (isset($data['callback']) && is_array($data['callback']) && ($object = current($data['callback']))) {
				if (is_a($object, 'WP_Widget')) {

					$widget->type = $object->id_base;

					if (isset($data['params'][0]['number'])) {

						$number = $data['params'][0]['number'];
						$params = get_option($object->option_name);

						if (false === $params && isset($object->alt_option_name)) {
							$params = get_option($object->alt_option_name);
						}

						if (isset($params[$number])) {
							$widget->params = $params[$number];
						}
					}
				}
			} else if ($id == 'nav_menu-0') {
			    $widget->type = 'nav_menu';
			}
			
			if (empty($widget->name)) {
				$widget->name = ucfirst($widget->type);
			}

			if (empty($widget->params)) {
				$widget->params = array();
			}

			$widget->options = isset($options[$id]) ? $options[$id] : array();
			$widget->display = $this->displayWidget($widget);
		}
		
		return $widget;
	}

	/*
		Function: getWidgets
			Retrieve widgets

		Parameters:
			$position - Position

		Returns:
			Array
	*/
	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);
	}
} 

 

Δημοσ.

Το έπαθα και εγω χθές με την εγκατάσταση ενός Plugin. Εαν εγκατέστησες πρόσφατα κάποιο Plugin, σβήστο μέσω ftp. 

Συνδέσου στον ftp μετά πάνε wp-content/plugins/ και σβήσε την σελίδα του Plugin που είναι .php.

 

Ετσι τουλάχιστον λύθηκε το δικό μου θέμα!

Δημοσ.

Όχι κανένα plugin. Από οτι κατάλαβα όλο το πρόβλημα έγινε με την αναβάθμιση της PHP από τον host. Έκανα restore από ένα backup 2 εβδομάδων πριν και ξανάλλαξα χειροκίνητα την php σε παλιότερη version. 

 

Αλλά γιατί τα ξασκίζει όλα όταν αλλάζει η php?

Δημοσ.

Όχι κανένα plugin. Από οτι κατάλαβα όλο το πρόβλημα έγινε με την αναβάθμιση της PHP από τον host. Έκανα restore από ένα backup 2 εβδομάδων πριν και ξανάλλαξα χειροκίνητα την php σε παλιότερη version. 

 

Αλλά γιατί τα ξασκίζει όλα όταν αλλάζει η php?

Το site σου ξεσκίζετε προφανώς επειδή δεν είναι συμβατό με την Νέα έκδοση της PHP.

 

Απ' ο,τι βλέπω χρησιμοποιείς Premium theme από την Yoo themes. Προφανώς είναι πολύ παλιά η έκδοση του Warp Framework.

( Αφού το error είναι μέσα στο αρχείο του system.php )

Έχει βγει μέχρι και 7. ( Αλλα δεν είμαι σίγουρος για την συμβατότητα γενικά του Warp με το Wordpress 4, το έχω δοκιμάσει χωρίς να βρω κάποιο πρόβλημα )

 

Το Warp 6 παίζει πάντως στην PHP 5.4 χωρίς κανένα πρόβλημα.

Τον Νοέμβρη έγινε αναβάθμιση και στον Provider που είμαι εγώ και όλα τα Site ( Joomla τα περισσότερα ) τα οποία χρησιμοποιούν Warp 6 έπαιξαν κανονικά.

 

Επίσης εφόσον έχεις Premium theme και αγορασμένο και έχεις ακόμα Support από την Yoo themes τότε θα σου λύσουν αυτοί το πρόβλημα που έχεις ( Το support τους είναι πολύ δυνατό ).

 

Πως άλλαξες την έκδοση της PHP ? Σε dedicated Server είσαι ?

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...