Suprascrie plugin cu functions.php
add_action('wp_head','add_gpp_gallery');
function add_gpp_gallery() {
if( ( is_single() || is_page() ) && ( !is_page_template('page-blog.php') ) ){
remove_shortcode('gallery', 'gallery_shortcode');
add_shortcode('gallery', 'gpp_gallery_shortcode');
}
}
Salut tuturor, am extras funcția de mai sus din fișierul core al plugin-ului și speram să o modific pentru a înlocui galeria implicită WordPress doar pentru tipul meu personalizat de postare. Așa că am modificat instrucțiunea if de mai sus în:
if (is_single() && is_post_type('post_type'){
Am modificat-o și am pus-o în functions.php - dar primesc o eroare care spune că nu pot redeclara add_gpp_gallery
Cum aș putea suprascrie funcțiile plugin-ului fără să modific codul acestuia?
mulțumesc
EDITARE
Am încercat:
remove_action( 'wp_head', 'add_gpp_gallery' );
add_action('wp_head','jason_add_gpp_gallery');
function jason_add_gpp_gallery() {
if ( is_single() && is_post_type('listings') ){
remove_shortcode('gallery', 'gallery_shortcode');
add_shortcode('gallery', 'gpp_gallery_shortcode');
}
}
și primesc o eroare fatală -
Eroare fatală: Apel către funcția nedefinită is_post_type() în /home/hostspro/public_html/movemaine.com/wp-content/themes/movemaine/functions.php la linia 269
EDITARE #2
Aveam funcțiile încurcate și uitasem să schimb is_post_type. Următorul cod funcționează și vă mulțumesc pentru ajutor
remove_action( 'wp_head', 'add_gpp_gallery' );
add_action('wp_head','jason_add_gpp_gallery');
function jason_add_gpp_gallery() {
if ( is_single() && 'listings' == get_post_type() ) {
remove_shortcode('gallery', 'gallery_shortcode');
add_shortcode('gallery', 'gpp_gallery_shortcode');
}
}

Puteți schimba numele funcției add_gpp_gallery
atât în callback cât și în declarație pentru a evita conflictul dintre original și clona dumneavoastră.
Ceva de genul...
add_action('wp_head','jason_add_gpp_gallery');
function jason_add_gpp_gallery() {
if ( is_single() && 'your_post_type' == get_post_type() ) ){
remove_shortcode('gallery', 'gallery_shortcode');
add_shortcode('gallery', 'gpp_gallery_shortcode');
}
}
... ar trebui să funcționeze pentru dumneavoastră.
Bonus: Puteți elimina acțiunea originală a pluginului cu remove_action() dacă este necesar.

Rețineți că crearea de nume de funcții unice de fiecare dată când scrieți o funcție este considerată o practică importantă, deoarece previne conflictele exacte pe care le întâmpinați. Consultați Cele mai bune practici obiective pentru dezvoltarea de plugin-uri

"Bonusul" este de fapt răspunsul. Trebuie să apelați remove_action( 'wp_head', 'add_gpp_gallery' )
, apoi să apelați codul personalizat (cu nume de funcții corect spațiate).

@Chip Mulțumesc pentru clarificare! Nu este nevoie să păstrați ambele.

Hmm, vezi întrebarea ta anterioară, unde ai întrebat despre is_post_type()
?

@Jason aceasta este o eroare pe care am copiat-o din exemplul tău și este complet nelegată de problema rezolvată de acest răspuns. Problema este că nu există nicio funcție is_post_type
în WP. Aruncă o privire la get_post_type()

După cum se pare, funcția.php este rulată înainte ca tot nucleul WP să se încarce, mai exact is_post_type()
...

De ce altfel ar primi OP o eroare de funcție nedefinită pentru o funcție care de fapt există?
