it-swarm.com.de

Schwerwiegender Fehler: Aufruf der undefinierten Funktion plugin_dir_path ()

Ich versuche ein benutzerdefiniertes WordPress-Plugin zu erstellen und habe im Ordner "plugins" einen neuen Ordner erstellt. Es heißt "wp-services-table". In diesem Ordner habe ich zwei Dateien erstellt: wp-services-table.php und wp-services-table-shortcode.php

Im Moment ist die Datei wp-services-table-shortcode.php leer. Ich habe dies nur in der Datei wp-services-table.php geschrieben:

<?php
/**
* Plugin Name: Table and Modal Window for Displaying Services
* Description: Displays Services in a table, by Categories and opens a Modal Window when the user clicks for more information.
* Version: 0.1.0
* Author: AMI
*/

//Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit; 
}

require_once ( plugin_dir_path(__FILE__) . 'wp-services-table-shortcode.php' );

Aber ich bekomme diesen Fehler:

Schwerwiegender Fehler: Rufen Sie in Zeile 14 die undefinierte Funktion plugin_dir_path () in /home/mysitedomain/public_html/wpfoldername/contentfolder/plugins/wp-services-table/wp-services-table.php auf

Könnte dies daran liegen, dass ich einen benutzerdefinierten Namen anstelle von "wp-content" habe? Oder weil ich WordPress in einem Unterordner ("wpfoldername") und nicht direkt im Ordner "public_html" installiert habe?

Im Übrigen denke ich, dass das, was ich in die Datei des Plugins geschrieben habe, für das Erstellen eines neuen Plugins korrekt ist.

Ich habe auch versucht, dies hinzuzufügen:

$dir = plugin_dir_path(__FILE__);
var_dump($dir);
die();

Um zu sehen, welchen Pfad es für das Plugin anzeigen würde, habe ich natürlich immer noch den gleichen Fehler bezüglich der undefinierten Funktion plugin_dir_path ().

Ich hoffe, jemand weiß, warum das passiert, weil ich hier sehr verwirrt bin. Vielen Dank!

Ich habe die Frage bearbeitet, um den Inhalt von wp-config hinzuzufügen: Es könnte nützlich sein, weil ich den Namen des Ordners wp-content geändert habe und auch WordPress in einem Unterordner installiert ist. Ich denke, das ist der Teil, der relevant ist:

/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');

/** Renaming the wp-content folder. */
define ('WP_CONTENT_FOLDERNAME', 'contentfolder');
define ('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME) ;

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_Host'] . '/wpfoldername/');
define('WP_CONTENT_URL', WP_SITEURL . WP_CONTENT_FOLDERNAME);

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Die index.php-Datei befindet sich ebenfalls im Ordner "wpfoldername" und enthält den folgenden Code:

<?php
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/

/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
3
Ami

Könnte es sein, dass Sie vergessen haben, den Teil Exit if accessed directly zu kommentieren?

//Exit if accessed directly

if ( ! defined( 'ABSPATH' ) ) {
exit; 
}
3
codiiv

Wie gelangen Sie auf die Seite? Versuchen Sie, direkt auf das Plug-in-File zuzugreifen, ohne das Frontend der Site zu verwenden? In diesem Fall wurde Wordpress wahrscheinlich nicht geladen.

Was passiert, wenn Sie den folgenden Code oben auf Ihrer Seite einfügen?

if ( !defined('ABSPATH') ) {
    //If wordpress isn't loaded load it up.
    $path = $_SERVER['DOCUMENT_ROOT'];
    include_once $path . '/wp-load.php';
}

Der obige Code stellt sicher, dass Wordpress geladen ist, bevor Ihr Code ausgeführt wird.

1
Sjoerd van Hout