webentwicklung-frage-antwort-db.com.de

PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion plugin_basename

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?

1
whatsthebigidea

plugin_basename ist eine WordPress-Funktion, die den Namen Ihrer Plugins-Datei erhält, indem sie einfach das Verzeichnis übergibt.

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__);

2
Chris_O

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.

0
Michael Ecklund