Suprascrie plugin cu functions.php

18 aug. 2011, 14:20:50
Vizualizări: 25.1K
Voturi: 1
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');
    }
}
1
Comentarii

Puteți scurta condiția dvs. de la is_single() && 'listings' = get_post_type() la is_singular('listings'). Eroarea fatală apare deoarece nu există o funcție is_post_type.

chrisguitarguy chrisguitarguy
18 aug. 2011 16:07:36
Toate răspunsurile la întrebare 1
10

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.

18 aug. 2011 15:00:55
Comentarii

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

Michal Mau Michal Mau
18 aug. 2011 15:05:30

"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 Bennett Chip Bennett
18 aug. 2011 15:06:20

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

Michal Mau Michal Mau
18 aug. 2011 15:10:16

Din păcate - primesc o eroare - vezi editarea.

Jason Jason
18 aug. 2011 15:17:19

@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()

Michal Mau Michal Mau
18 aug. 2011 15:58:47

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

Dunhamzzz Dunhamzzz
18 aug. 2011 16:09:19

@Dunhamzzz Glumești, nu?

Michal Mau Michal Mau
18 aug. 2011 16:40:27

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

Dunhamzzz Dunhamzzz
18 aug. 2011 16:44:05

@Dunhamzzz Deprecated, vezi comentariul lui Chip Bennet de mai sus care trimite la întrebarea anterioară a OP

Michal Mau Michal Mau
18 aug. 2011 16:52:19
Arată celelalte 5 comentarii