Je voudrais mettre quelque chose comme ceci dans searchform.php:
<?php if($widget){ ?>
//load serach form for sidebar...
<?php }else{ ?>
//load different search form for page content (404 page)
<?php } ?>
Comment puis-je préparer la variable $widget
? Ou peut-être que je devrais utiliser une autre méthode? Comme filtre? Ou obtenir une partie du modèle?
La fonction get_search_form()
(que doit être utilisée) utilise locate_template('searchform.php');
pour afficher le formulaire de recherche.
Les derniers retours (comme vous pouvez le voir de sa source)
le nom de fichier du modèle s'il en existe un
Donc, si vous voulez juste attraper la manière par défaut, alors vous devriez simplement tester
'searchform.php' === locate_template( 'searchform.php' ) AND print 'Search form displayed!';
Vous pouvez peut-être penser à une centaine d'autres scénarios sur la manière d'inclure le formulaire de recherche, mais vous ne les saisirez jamais tous.
Le vrai problème (et je n'ai pas de solution à cela), c'est que cela ne fait que vérifier l'existence, pas si elle est incluse via un widget. Donc, ci-dessus est uniquement destiné à fonctionner à l'intérieur d'un widget (personnalisé).
Si vous souhaitez afficher un widget (en l'absence d'autres personnes) via le code PHP de votre modèle, utilisez alors the_widget()
Lien source.
Pour inspecter vos barres latérales, vous pouvez simplement vérifier le $GLOBALS['wp_registered_sidebars']
.
Core a également la possibilité de vérifier les widgets enregistrés: wp_get_sidebars_widgets()
, que vous pouvez utiliser pour vérifier l’existence d’un widget.
J'ai réussi à faire cela avec get_template_part();
- vous avez juste besoin de searchform.php et searchform-different.php.