web-dev-qa-db-fra.com

Utiliser des constantes de thème dans le plugin?

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

2
Zach

TEMPLATEPATH et STYLESHEETPATHseront 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 …
    }
}
3
fuxia