The Problem
##The Problem II am trying to remove an JSON+LD block being added by a WordPress plugin called The Events Calendar.
I believe it is being added by the function called: Tribe__Events__Template__Single_Event within which the function named google_data_markup is responsible for the actual markup which I am trying to stop/prevent from being added to the HTML.
The Code
##The Code FromFrom my limited understanding of this, I need to remove this action:
add_action( 'wp_head', array( $this, 'google_data_markup' ) );.
I believe it is being called here, in Single_Event.php:
if ( ! class_exists( 'Tribe__Events__Template__Single_Event' ) ) { /** * Single event template class */ class Tribe__Events__Template__Single_Event extends Tribe__Events__Template_Factory { protected $body_class = 'events-single'; public function hooks() { parent::hooks(); // google data markup add_action( 'wp_head', array( $this, 'google_data_markup' ) ); } public function google_data_markup() { $event_markup = new Tribe__Events__Google_Data_Markup__Event(); $html = apply_filters( 'tribe_google_data_markup_json', $event_markup->script_block() ); echo $html; } /** ... ##What I've tried
What I've tried
Initial Attempts
###Initial Attempts AfterAfter finding this on StackOverflow, and this on WordPress Dev Exchange, I tried:
remove_action( 'wp_head', array( 'Tribe__Events__Template__Single_Event', 'google_data_markup' ) ); and
global $Tribe__Events__Template__Single_Event; remove_action( 'wp_head', array( $Tribe__Events__Template__Single_Event, 'google_data_markup' ) ); But it did not work.
###Subsequent Attempts
Subsequent Attempts
After getting even more desperate and seeing this slim thread (the example in that thread seems very similar to mine but no answer provided that I understand), and this, I've also tried this, with the & before the variable name (why?):
remove_action( 'wp_head', array( &$Tribe__Events__Template__Single_Event, 'google_data_markup' ) ); I've also tried this:
function remove_the_events_calendar_jsonld() { remove_action( 'wp_head', array( $Tribe__Events__Template__Single_Event, 'google_data_markup' ) ); } add_action( 'plugins_loaded', 'remove_the_events_calendar_jsonld', 1 ); as well as:
remove_action( 'Tribe__Events__Template__Single_Event', 'google_data_markup' ); Please help. At this point I have no idea if I am making a simple syntax or logic error of sorts, or if I am completely confused and oblivious to how functions, classes and actions work.