Sobreescribir plugin con functions.php

18 ago 2011, 14:20:50
Vistas: 25.1K
Votos: 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');
    }
}

Hola a todos, extraje la función anterior del archivo de funciones principales del plugin, y esperaba cambiarla para reemplazar la galería predeterminada de WP solo en mi tipo de publicación personalizada. Así que cambié la declaración if anterior a:

if (is_single() && is_post_type('post_type'){

Lo cambié y lo puse en mi functions.php, pero estoy recibiendo un error que indica que no puedo redeclarar add_gpp_gallery

¿Cómo podría sobreescribir las funciones del plugin sin tocar el código del plugin?

gracias

EDICIÓN

Intenté:

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

y obtengo un error fatal -

Error fatal: Llamada a función indefinida is_post_type() en /home/hostspro/public_html/movemaine.com/wp-content/themes/movemaine/functions.php en la línea 269

EDICIÓN #2

Había cruzado mis funciones y me olvidé de cambiar is_post_type. El siguiente código está funcionando y gracias por la ayuda

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
Comentarios

Puedes acortar tu condicional de is_single() && 'listings' = get_post_type() a is_singular('listings'). El error fatal ocurre porque no existe una función is_post_type.

chrisguitarguy chrisguitarguy
18 ago 2011 16:07:36
Todas las respuestas a la pregunta 1
10

Puedes cambiar el nombre de la función add_gpp_gallery tanto en el callback como en la declaración para evitar el conflicto entre la original y tu clon.

Algo como esto...

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

... debería funcionar para ti.

Extra: Puedes eliminar la acción original del plugin con remove_action() si es necesario.

18 ago 2011 15:00:55
Comentarios

Ten en cuenta que crear nombres de funciones únicos cada vez que escribes una función se considera una práctica importante, ya que evita los conflictos exactos que estás experimentando. Consulta Mejores prácticas objetivas para el desarrollo de plugins

Michal Mau Michal Mau
18 ago 2011 15:05:30

El "Bonus" es en realidad la respuesta. Necesitas llamar a remove_action( 'wp_head', 'add_gpp_gallery' ), y luego llamar a tu código personalizado (con nombres de funciones correctamente espaciados).

Chip Bennett Chip Bennett
18 ago 2011 15:06:20

@Chip ¡Gracias por aclarar esto! No es necesario mantener ambos.

Michal Mau Michal Mau
18 ago 2011 15:10:16

Desafortunadamente, obtengo un error - ver edición.

Jason Jason
18 ago 2011 15:17:19

@Jason este es un error que copié y pegué de tu ejemplo y no tiene ninguna relación con el problema resuelto por esta respuesta. El problema es que no existe la función is_post_type en WP. Echa un vistazo a get_post_type()

Michal Mau Michal Mau
18 ago 2011 15:58:47

Por lo que parece, tu archivo functions.php se está ejecutando antes de que todo el núcleo de WP se cargue, específicamente is_post_type()...

Dunhamzzz Dunhamzzz
18 ago 2011 16:09:19

@Dunhamzzz ¿Estás bromeando, verdad?

Michal Mau Michal Mau
18 ago 2011 16:40:27

¿Por qué más obtendría el OP un error de función no definida para una función que de hecho existe?

Dunhamzzz Dunhamzzz
18 ago 2011 16:44:05

@Dunhamzzz Obsoleto, ver el comentario de Chip Bennet arriba que señala a la Q anterior del OP

Michal Mau Michal Mau
18 ago 2011 16:52:19
Mostrar los 5 comentarios restantes