web-dev-qa-db-fra.com

Faire en sorte que template_include fonctionne quand allow_url_include est désactivé?

Je travaille sur un plugin qui crée un type d'article personnalisé et j'aimerais afficher un modèle personnalisé sans modifier le thème.

Voici le code simplifié sur lequel je travaille:

add_filter('template_include', 'my_custom_template');

function my_custom_template($incFile) {
    global $wp;
    global $wp_query;

    if ($wp->query_vars['post_type'] == 'custom-post-type') {

        $incFile = MY_PLUGIN_TEMPLATES . '/template.php';

    }

    return $incFile;

} 

Le problème que je rencontre est que lorsque allow_url_include est désactivé dans le fichier php.ini d'un serveur, cela génère une petite erreur amusante:

Avertissement: include () [function.include]: http: // l'encapsuleur est désactivé dans la configuration du serveur par allow_url_include = 0 dans http: //path \to\wp-includes\template-loader.php à la ligne 43

Je suppose donc que la question est la suivante: existe-t-il un moyen d’envoyer un modèle via le filtre template_include sans provoquer cette erreur allow_url_include?

Merci!

1
bybloggers

Ne le sauriez-vous pas - 10 minutes ou moins depuis que j'ai posé ma question et que j'ai découvert la réponse.

J'essayais de définir MY_PLUGIN_TEMPLATES en utilisant plugins_dir_url (), maintenant cela ressemble à ceci et fonctionne

define( 'MY_PLUGIN_TEMPLATES', dirname( __FILE__ ) . '/templates' );

Merci à mfields pour la suggestion de dirname au lieu de WP_PLUGIN_DIR.

1
bybloggers