web-dev-qa-db-fra.com

Comment vérifier si searchform.php est en tant que widget?

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?

2
Paul

Vérifier si le formulaire de recherche est inclus?

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

Afficher le widget par programmation

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.

Vérifiez vos barres latérales

Pour inspecter vos barres latérales, vous pouvez simplement vérifier le $GLOBALS['wp_registered_sidebars'].

Vérifiez vos widgets

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.

1
kaiser

J'ai réussi à faire cela avec get_template_part(); - vous avez juste besoin de searchform.php et searchform-different.php.

0
Paul