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

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.

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

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).

Mmm, ¿viste tu pregunta anterior, donde preguntaste sobre is_post_type()
?

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

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

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