De ce să folosești funcția function_exists în WordPress?
Am observat că mulți developeri de teme WordPress folosesc acest lucru în functions.php
if (function_exists('register_nav_menus')) {
register_nav_menus (array('primary' => 'Navigare în antet'));
}
Eu, personal, folosesc întotdeauna add_action pentru fiecare funcție pe care o utilizez în functions.php
Deci, codul de mai sus ar fi scris astfel:
add_action('init', 'my_register_nav_menus');
function my_register_nav_menus() {
register_nav_menus (array('primary' => 'Navigare în antet'));
}
Am două întrebări:
De ce se folosește instrucțiunea if în prima metodă?
Care este metoda corectă?

Verificarea existenței funcțiilor încorporate în WordPress înainte de a le apela este pentru compatibilitate inversă, care, după părerea mea, nu este necesară.
Deci, dacă vezi if ( function_exists( 'register_nav_menus' ) )
, autorul temei suportă versiuni anterioare versiunii 3.0.
Mai vezi uneori if ( function_exists( 'dynamic_sidebar' ) )
. De ce? Nu aș putea să-ți spun, deoarece dynamic_sidebar a fost introdus în versiunea 2.2.
Un alt motiv pentru a folosi această verificare este pentru a face tema sau pluginul tău "pluggable". O funcție "pluggable" este una care poate fi suprascrisă într-o temă copil sau într-un alt plugin.
Aceasta se face la definire, nu la apelare, și folosești operatorul ! pentru a te asigura că funcția nu există deja înainte de a o defini.
if ( ! function_exists( 'my_awesome_function' ) ) {
/**
* Funcția mea minunată este minunată
*
* @param array $args
* @return array
*/
function my_awesome_function( $args ) {
//conținutul funcției
return array();
}
}
Când se face acest lucru, o temă copil sau alt plugin poate suprascrie acea funcție cu propria implementare.

Funcția function_exists
nu este o altă metodă de a încărca funcția precum add_action
, ci este folosită pentru a verifica codul tău și a te asigura că nu există altă funcție cu același nume, astfel încât să nu strici codul. Conform php.net:
Verifică lista de funcții definite, atât cele încorporate (interne) cât și cele definite de utilizator, pentru function_name.
Dacă ai aceeași funcție de două ori în codul tău, aceasta va cauza probleme, de aceea prefixezi funcția ta cu altceva decât wp_.
Citește mai multe: http://php.net/manual/en/function.function-exists.php

poți folosi http://php.net/function_exists
if(function_exists('my_function')){
// funcția my_function este definită
}
SAU dacă dorești să vezi toate funcțiile disponibile, astfel încât să le poți afișa pe toate,
echo "<pre>"; print_r(get_defined_functions());
afișează pe pagină și poți căuta acea funcție; dacă nu este găsită în listă, înseamnă că nu este disponibilă pentru utilizare.
poate fi necesar să activezi extensia pentru o anumită bibliotecă.

function_exists
ar trebui folosit după numele funcției într-o temă, nu înainte.
add_action( 'loop_start', 'add_slider' );
function add_slider() {
if ( function_exists( 'soliloquy' ) ) {
soliloquy( 'slider', 'slug' );
}
}
Aceasta verifică dacă plugin-ul este activ înainte de a afișa o funcție și/sau markup, altfel s-ar putea să primiți o eroare precum apel la funcție nedefinită.

php.net definește acest lucru ca
(PHP 4, PHP 5, PHP 7) function_exists — Returnează TRUE dacă funcția dată a fost definită
Trebuie să fiu de acord cu Michelle în ceea ce privește utilizarea, și anume că ar trebui să folosești această verificare doar pentru ceva similar cu verificarea tipului; deci ai verifica dacă o funcție există (pe acea pagină sau din orice este apelat pe acea pagină/referință de fișier) pentru a ști dacă este sigur să rulezi o altă funcție sau să analizezi un șablon HTML.
După cum a menționat cineva, este folosit în mod obișnuit pentru a verifica dacă fișierul/tema ta (folosind WordPress) poate rula cerința ta necesară. Eu am folosit-o pentru a verifica dacă o temă are o parte specifică de șablon.
if ( function_exists( 'register_sidebar' ) ) {
get_sidebar();
}
