it-swarm.com.de

Warum verwenden, wenn function_exists?

Mir ist aufgefallen, dass viele Entwickler von WordPress-Themes dies in functions.php verwenden würden.

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

Für mich benutze ich immer add_action für jede Funktion, die ich in functions.php benutze.

Das obige würde also geschrieben werden als:

add_action('init', 'my_register_nav_menus');

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

Ich habe zwei Fragen:

  1. Warum die if-Anweisung in der ersten Methode verwenden?

  2. Welcher ist der richtige Weg?

27
Greeso

Überprüfen Sie vor dem Aufrufen, ob integrierte WordPress-Funktionen vorhanden sind, um die Abwärtskompatibilität zu gewährleisten, die IMHO nicht benötigt.

Wenn Sie also if ( function_exists( 'register_nav_menus' ) ) sehen, unterstützt der Autor des Themas Versionen vor 3.0.

Sie sehen immer noch manchmal if ( function_exists( 'dynamic_sidebar' ) ) Warum? Ich konnte es Ihnen nicht sagen, da dynamic_sidebar in 2.2 eingeführt wurde.

Ein weiterer Grund, es zu verwenden, besteht darin, Ihr Theme oder Plugin steckbar zu machen. Eine Plug-in-Funktion kann in einem untergeordneten Design oder einem anderen Plug-in überschrieben werden.

Dies erfolgt über die Definition nicht über den Aufruf und Sie benutzen den! um sicherzustellen, dass es noch nicht existiert, bevor Sie es definieren.

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();
  }
}

Wenn dies erledigt ist, kann ein untergeordnetes Thema oder ein anderes Plugin diese Funktion mit seiner eigenen überschreiben.

30
Chris_O

Die Funktion function_exists ist keine andere Möglichkeit, die Funktion wie add_action zu laden, um Ihren Code zu überprüfen und festzustellen, ob es keine andere Funktion mit demselben Namen gibt, damit Ihr Code nicht beschädigt wird. Von php.net:

Überprüft die Liste der vordefinierten (internen) und benutzerdefinierten Funktionen auf Funktionsname.

Wenn Sie die gleiche Funktion zweimal in Ihrem Code haben, wird sie unterbrochen, deshalb stellen Sie Ihre -Funktion mit etwas anderem als wp_ voran.

Lesen Sie mehr: http://php.net/manual/en/function.function-exists.php

9

function_exists sollte in einem Thema nach dem Funktionsnamen verwendet werden, nicht zuvor.

add_action( 'loop_start', 'add_slider' );

function add_slider() {

if ( function_exists( 'soliloquy' ) ) { 

soliloquy( 'slider', 'slug' ); 

    }

}
0
Michelle

sie können http://php.net/function_exists verwenden.

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

ODER wenn Sie alle verfügbaren Funktionen sehen möchten, damit Sie auch alle drucken können,

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

wenn Sie auf Seite drucken, können Sie diese Funktion durchsuchen, wenn sie nicht in der Liste gefunden wird. Dies bedeutet, dass sie nicht verwendet werden kann.

möglicherweise müssen Sie die Erweiterung für eine bestimmte Bibliothek aktivieren.

0
manish1706