J'essaie de créer un plugin WordPress personnalisé et j'ai créé un nouveau dossier dans le dossier "plugins". Cela s'appelle "wp-services-table". Dans ce dossier, j'ai créé deux fichiers: wp-services-table.php et wp-services-table-shortcode.php.
Pour l'instant, le fichier wp-services-table-shortcode.php est vide. Je n'ai écrit ceci que dans le fichier 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' );
Mais je reçois cette erreur:
Erreur fatale: appel de la fonction non définie plugin_dir_path () dans /home/mysitedomain/public_html/wpfoldername/contentfolder/plugins/wp-services-table/wp-services-table.php à la ligne 14
Cela pourrait-il être dû au fait que j'ai un nom personnalisé au lieu de "wp-content"? Ou parce que j'ai installé WordPress dans un sous-dossier ("wpfoldername") et non directement dans le dossier "public_html"?
Parce que sinon, je pense que ce que j'ai écrit dans le fichier du plugin est correct pour créer un nouveau plugin.
J'ai aussi essayé d'ajouter ceci:
$dir = plugin_dir_path(__FILE__);
var_dump($dir);
die();
Pour voir quel chemin cela afficherait pour le plugin, mais bien sûr, j'ai toujours la même erreur concernant la fonction non définie plugin_dir_path ()
J'espère que quelqu'un sait pourquoi cela se produit parce que je suis très perplexe ici. Je vous remercie!
J'ai édité la question pour ajouter le contenu de wp-config: cela pourrait être utile parce que j'ai changé le nom du dossier wp-content et que WordPress est également installé dans un sous-dossier. Je pense que c'est la partie qui est pertinente:
/* 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');
Le fichier index.php se trouve également dans le dossier "wpfoldername" et contient le code suivant:
<?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' );
Vous avez peut-être oublié de commenter la partie Exit if accessed directly
?
//Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
Comment accédez-vous à la page? Essayez-vous d'accéder directement au fichier plugin sans utiliser l'interface du site? Si c'est le cas, Wordpress n'a probablement pas été chargé.
Que se passe-t-il si vous ajoutez le code suivant en haut de votre page?
if ( !defined('ABSPATH') ) {
//If wordpress isn't loaded load it up.
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
}
Le code ci-dessus permet de s'assurer que Wordpress est chargé avant que votre code ne s'exécute.