web-dev-qa-db-fra.com

Comment appeler une fonction de plugin depuis index.php

J'ai créé une fonction dans mon plugin myplugin avec le nom foo, comment l'appeler depuis l'interface

 e.g. index.php?
7
Yoga

De la même manière que vous le feriez avec un autre:

foo();

Les plugins actifs sont chargés avant les fichiers de thème

Vous voudrez peut-être vérifier que votre plugin est activé et que la fonction est disponible pour que les choses ne se passent pas comme une poire si vous oubliez de l'activer, comme:

if(function_exists('foo')){
    foo();
} else {
    echo "oh dear you haven't activated/installed 'myplugin', go do that before the 'foo' feature is available";
}

N'oubliez pas non plus que foo est un nom de fonction très générique, peut-être que le plug-in "omgfoo" a également une fonction foo. Donc préfixez/namespace votre fonction à quelque chose d'unique

Vous voudrez éventuellement utiliser des actions et des filtres, car ils sont plus sûrs et de meilleure pratique, vous pouvez continuer à lire à ce sujet ici

12
Tom J Nowell

Vous pas. Un thème ne doit pas s'appuyer sur un plugin, sauf dans un environnement très contrôlé. Utilisez actions et filtres à la place.

Donc, dans votre thème, vous pouvez utiliser:

do_action( 'before_header' );

… ou …

$bg_options = array (
    'wp-head-callback' => 't5_custom_background_frontend',
    'default-color'    => 'f0f0f0',
    'default-image'    => '',
);
$bg_options = apply_filters( 't5_theme_bg_options', $bg_options );
add_theme_support( 'custom-background', $bg_options );
add_action( 'login_head', $bg_options['wp-head-callback'] );

Dans votre plugin, vous utilisez add_action() et add_filter() pour modifier ou ajouter du nouveau contenu. Ainsi, le thème fonctionnera toujours lorsque le plug-in aura été désactivé et que vous n’aurez pas à utiliser function_exists().

5
fuxia

Les plugins actifs sont chargés (comme dans la technique - leurs fichiers sont inclus et traités par PHP lors du chargement de WordPress) par les modèles de thème temporels exécutés.

Donc, votre fonction devrait être disponible et peut être appelée comme n'importe quelle autre fonction:

<?php foo(); ?>

par exemple.

2
Rarst