Je crée une version plug-in des ajouts de la fonction du thème Roots - pour le rendre un peu plus portable, mais j'ai rencontré un problème.
Une partie de ce que fait Roots consiste à ajouter des règles htaccess
basées sur les informations de thème actuelles, comme ceci:
// only use clean urls if the theme isn't a child or an MU (Network) install
if (!is_multisite() && !is_child_theme() && get_option('permalink_structure')) {
add_action('generate_rewrite_rules', 'roots_add_rewrites');
add_action('generate_rewrite_rules', 'roots_add_h5bp_htaccess');
if (!is_admin()) {
$tags = array(
'plugins_url',
'bloginfo',
'stylesheet_directory_uri',
'template_directory_uri',
'script_loader_src',
'style_loader_src'
);
add_filters($tags, 'roots_clean_urls');
}
}
Il s’agit donc essentiellement de vérifier que la configuration actuelle n’est pas un environnement multisite, ni un thème enfant et que la structure de lien permanent a été mise à jour à partir des valeurs par défaut. Il semble que la fonction is_child_theme()
ne soit pas appelée correctement, principalement parce que l'erreur suivante s'affiche sur l'interface:
Notice: Use of undefined constant TEMPLATEPATH - assumed 'TEMPLATEPATH' in /Users/studio/Sites/base_wp/wp-includes/theme.php on line 17
Notice: Use of undefined constant STYLESHEETPATH - assumed 'STYLESHEETPATH' in /Users/studio/Sites/base_wp/wp-includes/theme.php on line 17
Donc, d'après ce que je peux comprendre, c'est le fichier wp-includes/theme.php
qui n'est pas inclus dans les fichiers de plug-in (ce qui a du sens).
Je me suis cogné la tête contre le mur avec celui-ci, mais j'essaie de trouver le moyen le plus propre possible d'ajouter ces constantes au plug-in lui-même -> dois-je simplement inclure ce fichier theme.php
? Merci.
UPDATE: On dirait que je peux utiliser les fonctions qui sont dans wp-includes/theme.php
(comme get_themes()
), alors je sais que ce n'est pas le problème. hm ...
TEMPLATEPATH
et STYLESHEETPATH
seront obsolètes dans un avenir proche . Il n’est pas prudent de s’appuyer sur ces constantes. Utilisez get_template_directory()
et get_stylesheet_directory()
à la place.
Et attendez le hook init
(ou after_setup_theme
avant de les utiliser pour vous assurer que tous les fichiers nécessaires sont chargés.
Exemple pour un plugin:
add_action( 'after_setup_theme', 'wpse_50359_set_plugin_basics' );
function wpse_50359_set_plugin_basics()
{
if ( is_child_theme() )
{
// do something awesome …
}
}