Ich erhalte folgende Fehlermeldung: [27-Jun-2012 18:22:39 UTC] PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion plugin_basename () in/XXXX/public_html/wp-content/plugins/price -update/price-update.php in Zeile 68:
//We set the plugin basename here, could manually set it, but this is for demonstration purposes
$this->plugin_basename = plugin_basename(__FILE__);
in diesem Codeblock:
class PriceUpdate extends mtekk_admin
{
protected $version = '0.0.1';
protected $full_name = 'Price Update';
protected $short_name = 'Price Update';
protected $access_level = 'manage_options';
protected $identifier = 'pr_upate';
protected $unique_prefix = 'prud';
protected $plugin_basename = 'price-update/price-update.php';
protected $opt = array();
/**
* __construct()
*
* Class default constructor
*/
function __construct()
{
//We set the plugin basename here, could manually set it, but this is for demonstration purposes
$this->plugin_basename = plugin_basename(__FILE__);
register_deactivation_hook(__FILE__, array($this, 'deactivate'));
add_action($this->unique_prefix . '_cron_hook', array($this,'cron_handle'));
//Register some of our custom taxonomies
add_action('init', array($this, 'wp_init'), 0);
add_action('wp_footer', array($this, 'footer'));
//We're going to make sure we load the parent's constructor
parent::__construct();
}
Es ist jedoch wie oben definiert:
protected $plugin_basename = 'price-update/price-update.php';
irgendwelche Ideen?
Wenn Sie $this->plugin_basename
_ aufrufen, suchtPHP nach einem Funktions-Plugin_Basennamen, der in IHRER Klasse definiert ist. Keine Funktion plugin_basename () in Ihrer Klasse == PHP Fatal Error.
Wenn Sie einfach eine Variable definieren möchten, die den Dateinamen des Plugins enthält, gehen Sie folgendermaßen vor:
var $plugin_filename = plugin_basename( __FILE__);
Vielleicht ist es besser für Sie, plugin_dir_path(__FILE__);
zu verwenden?
Beispiel:
<?php
define( 'MYPLUGINNAME_PATH', plugin_dir_path(__FILE__) );
require MYPLUGINNAME_PATH . 'includes/class-metabox.php';
require MYPLUGINNAME_PATH . 'includes/class-widget.php';
?>
[EDIT - 29.06.2012]
Ich glaube, Sie haben Ihre PHP OOP -Logik falsch, aber ich könnte mich irren. Sie definieren eine Eigenschaft in einer untergeordneten Klasse , die eine übergeordnete Klasse erweitert . Sie rufen dann den übergeordneten Konstruktor innerhalb des untergeordneten Konstruktors auf.
Der von Ihnen bereitgestellte Code zeigt, dass Sie die untergeordnete Klasseneigenschaft $plugin_basename
zuweisen, danach aber nichts mehr damit tun.
Ich gehe davon aus, dass Sie versuchen, eine Eigenschaft $plugin_basename
für die übergeordnete Klasse festzulegen. Wenn dies jedoch der Fall ist, müssen Sie entweder die Eigenschaft in der übergeordneten Klasse definieren, OR Sie müssen die übergeordnete Methode aufrufen, die die Eigenschaft $plugin_basename
verwendet.
Wenn dies NICHT der Fall ist, müssen Sie sicherstellen, dass Sie die Eigenschaft $plugin_basename
in der untergeordneten Klasse NACH verwenden. Es wurde wie folgt zugewiesen: $this->child_class_method_name($this->plugin_basename);
Sie können auf die übergeordnete Klassenmethode zugreifen, die die Eigenschaft $plugin_basename
verarbeitet, und die von der untergeordneten Klasse zugewiesene Eigenschaft wie folgt an die übergeordnete Klassenmethode übergeben: $this->parent_class_method_name($this->plugin_basename);
Ich bin mir nicht sicher, wie Sie Ihr Plugin eingerichtet haben, angesichts der minimalen Menge an Code, die Sie bereitgestellt haben.
Wenn Sie uns eine Vorstellung davon geben könnten, was Sie mit der Eigenschaft $plugin_basename
tun, könnte ich Ihnen möglicherweise weiterhelfen, nachdem sie zugewiesen wurde.