it-roy-ru.com

Неустранимая ошибка: вызов неопределенной функции plugin_dir_path ()

Я пытаюсь создать собственный плагин WordPress, и я создал новую папку внутри папки "плагины". Это называется "wp-services-table". Внутри этой папки я создал два файла: wp-services-table.php и wp-services-table-shortcode.php

Пока что файл wp-services-table-shortcode.php пуст. Я написал это только в файле wp-services-table.php:

<?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' );

Но я получаю эту ошибку:

Неустранимая ошибка: вызов неопределенной функции plugin_dir_path () в /home/mysitedomain/public_html/wpfoldername/contentfolder/plugins/wp-services-table/wp-services-table.php в строке 14

Может ли это быть потому, что у меня есть собственное имя вместо "wp-content"? Или потому, что я установил WordPress в подпапку ("wpfoldername"), а не прямо в папку "public_html"?

Потому что в противном случае я думаю, что то, что я написал в файле плагина, является правильным для создания нового плагина.

Я также попытался добавить это:

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

Чтобы увидеть, какой путь он покажет для плагина, но, конечно, я все еще получил ту же ошибку в отношении неопределенной функции plugin_dir_path ()

Я надеюсь, что кто-то знает, почему это происходит, потому что я очень озадачен здесь. Спасибо!

Я отредактировал вопрос, чтобы добавить содержимое wp-config: это может быть полезно, потому что я изменил имя папки wp-content, а также WordPress установлен в подпапке. Я думаю, что это та часть, которая актуальна:

/* 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');

Также файл index.php находится в папке "wpfoldername" и содержит следующий код:

<?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

Может быть, вы забыли прокомментировать часть Exit if accessed directly?

//Exit if accessed directly

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

Как вы получаете доступ к странице? Вы пытаетесь получить доступ к файлу плагина напрямую, не используя внешний интерфейс сайта? В таком случае Wordpress, вероятно, не был загружен.

Что произойдет, если вы добавите следующий код вверху своей страницы?

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

Приведенный выше код гарантирует, что Wordpress будет загружен до запуска вашего кода.

1
Sjoerd van Hout