Pourquoi utiliser si function_exists?

25

J'ai remarqué que de nombreux développeurs de thèmes WordPress l'utilisaient dans functions.php

.
if (function_exists('register_nav_menus')) {
    register_nav_menus (array('primary' => 'Header Navigation'));
}

Pour moi, j'utilise toujours add_action pour chaque fonction que j'utilise dans functions.php

.

Ainsi, ce qui précède s’écrit comme suit:

add_action('init', 'my_register_nav_menus');

function my_register_nav_menus() {
    register_nav_menus (array('primary' => 'Header Navigation'));
}

J'ai deux questions:

  1. Pourquoi utiliser l'instruction if dans la première méthode?

  2. Laquelle est la bonne façon?

posée Greeso 23.08.2013 - 09:30
la source

4 réponses

27

Vérifier si les fonctions WordPress intégrées existent avant de les appeler est compatible avec les versions antérieures, IMHO n’est pas nécessaire.

Donc, si vous voyez if ( function_exists( 'register_nav_menus' ) ) , l'auteur du thème prend en charge les versions antérieures à la version 3.0.

Vous voyez encore parfois parfois if ( function_exists( 'dynamic_sidebar' ) ) Pourquoi? Je ne saurais vous dire car dynamic_sidebar a été introduit dans la version 2.2.

Une autre raison de l’utiliser est de rendre votre thème ou plugin pluggable. Une fonction plug-in est une fonction qui peut être remplacée dans un thème enfant ou un autre plugin.

Ceci est fait sur la définition pas l'appel et vous utilisez le! opérateur pour s’assurer qu’il n’existe pas déjà avant de le définir.

if ( ! function_exists( 'my_awesome_function' ) ) {
/**
 * My Awesome function is awesome
 *
 * @param array $args
 * @return array
 */
function my_awesome_function( $args ) {
  //function stuff
  return array();
  }
}

Lorsque cela est fait, un thème enfant ou un autre plugin peut remplacer cette fonction par son propre.

    
réponse donnée Chris_O 23.08.2013 - 12:31
la source
8

La fonction function_exists n'est pas une autre façon de charger la fonction telle que add_action sa pour vérifier votre code afin de vous assurer qu'il n'y a pas d'autre fonction portant le même nom, elle ne cassera donc pas votre code. De php.net:

  

Vérifie la liste des fonctions définies, à la fois intégrées (internes) et   défini par l'utilisateur, pour nom_fonction.

Si votre code contient la même fonction deux fois, il se cassera, c'est pourquoi vous préfixez Votre fonction avec autre chose que wp _.

En savoir plus: enlace

    
réponse donnée Pontus Abrahamsson 23.08.2013 - 09:43
la source
0

vous pouvez utiliser enlace

if(function_exists('my_function')){
   // my_function is defined
}

OU si vous souhaitez que toutes les fonctions soient disponibles, vous devez donc également toutes les imprimer,

echo "<pre>"; print_r(get_defined_functions());

imprimez sur la page et vous pouvez rechercher cette fonction si elle ne figure pas dans la liste signifie qu'elle n'est pas disponible.

vous devrez peut-être activer l'extension pour une bibliothèque particulière.

    
réponse donnée manish1706 08.02.2017 - 12:22
la source
0

function_exists devrait être utilisé après le nom de la fonction dans un thème pas avant.

add_action( 'loop_start', 'add_slider' );

function add_slider() {

if ( function_exists( 'soliloquy' ) ) { 

soliloquy( 'slider', 'slug' ); 

    }

}
    
réponse donnée Michelle 29.03.2018 - 15:55
la source

Lire d'autres questions sur les étiquettes