web-dev-qa-db-fra.com

Le fichier inclus dans functions.php via require_once () n'écho?

J'essaie de charger un fichier via require_once () pour gérer certaines fonctionnalités améliorées de mon thème. Je pourrais placer tout le code directement dans functions.php, mais j'essaie d'isoler ce code dans son propre script.

Le fichier est widget_context.php (voir le code ci-dessous) et pour le moment, j'essaye juste de renvoyer du texte à chaque widget. Cela fonctionne bien lorsque je fais l'écho directement à partir de la fonction qui appelle le fichier.

Cependant, je ne peux pas obtenir l'écho ou le retour (du fichier widget_context.php) dans le widget.

Qu'est-ce que je rate?

Cette fonction est dans functions.php

add_filter('in_widget_form', 'widget_context');

function widget_context(){
    //echo works here:
    //echo 'in widget form'; 
    $widgets_context_file = TEMPLATEPATH . "/widget_context.php";
    require_once($widgets_context_file);
}

Voici le contenu de widget_context.php

<?php
    echo 'place the checkboxes here';
    return 'place the checkboxes here';
?>
3
N2Mystic

Je ne sais pas pourquoi, mais pour une raison quelconque, vous devez utiliser include() ou require() dans form(), au lieu de include_once() et require_once(). J'imagine que form () est appelé plusieurs fois et que le fichier de vue externe n'est inclus que la première fois. include_once() et require_once() fonctionneront bien dans widget(), mais il est toujours préférable d'utiliser include() et require() au cas où le widget aurait plusieurs instances.

1
Ian Dunn

Si vous avez déjà résolu ce problème, partagez la réponse avec d’autres. Une des raisons potentielles de ce que vous avez vécu est si vous étiez dans un thème pour enfants. TEMPLATEPATH fait référence au thème parent et STYLESHEETPATH ​​fait référence au thème enfant.

0
Matthew Boynes