Доброго времени суток.
Работаю с WP Job Manager. На сайте, с помощью аддона WP Job Manager Applications выводится кнопка для отклика на вакансию, либо уведомление о том, что отклик уже был отправлен.
Обе функции цепляются к хуку 'single_job_listing_meta_after'.
С кнопкой проблем не возникло, т.к. она выводится в шаблоне и хук описан:
/**
* single_job_listing_start hook
*
* @hooked job_listing_meta_display - 20
* @hooked job_listing_company_display - 30
*/
do_action('single_job_listing_sidebar');
Я просто использовал remove_action и создал свой action, чтобы вывести в удобном для меня месте:
remove_action( 'single_job_listing_start', 'job_listing_meta_display', 20);
remove_action( 'single_job_listing_start', 'job_listing_company_display', 30 );
add_action('single_job_listing_sidebar', 'job_listing_company_display', 30);
add_action('single_job_listing_sidebar', 'job_listing_meta_display', 40);
А вот с сообщением о том, то отклик уже был отправлен возникли проблемы.
Ранее я перемещал кнопку с закладками от соседнего аддона WP Job Manager Bookmarks, используя экземпляр класса, который описан в файлах плагина, где выводится нужная мне функция.
Содержание файла:
class WP_Job_Manager_Bookmarks {
...
public function init_plugin() {
if ( ! class_exists( 'WP_Job_Manager' ) ) {
return;
}
// Add actions
add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts' ) );
add_action( 'wp', array( $this, 'bookmark_handler' ) );
add_action( 'single_job_listing_meta_after', array( $this, 'bookmark_form' ) );
add_action( 'single_resume_start', array( $this, 'bookmark_form' ) );
add_shortcode( 'my_bookmarks', array( $this, 'my_bookmarks' ) );
add_filter( 'post_class', array( $this, 'already_bookmarked_post_class' ), 20, 2 );
}
...
}
$GLOBALS['job_manager_bookmarks'] = new WP_Job_Manager_Bookmarks();
С помощью:
remove_action( 'single_job_listing_meta_after', [ $GLOBALS['job_manager_bookmarks'], 'bookmark_form' ]);
add_action('job-add-to-bookmarks',[ $GLOBALS['job_manager_bookmarks'], 'bookmark_form' ], 10);
Я подумал, что в этот раз я смогу сделать так же, но выяснилось, что в файлах плагина с нужной мне функцией, нет доступа к экземпляру класса.
Содержание файла:
class WP_Job_Manager_Applications_Post_Types {
/**
* Constructor
*/
public function __construct() {
add_filter( 'wpjm_the_job_title', [ $this, 'already_applied_title' ], 10, 2 );
add_action( 'single_job_listing_meta_after', [ $this, 'already_applied_message' ] );
add_action( 'init', [ $this, 'register_post_types' ], 20 );
if ( get_option( 'job_application_delete_with_job', 0 ) ) {
add_action( 'delete_post', [ $this, 'delete_post' ] );
add_action( 'wp_trash_post', [ $this, 'trash_post' ] );
add_action( 'untrash_post', [ $this, 'untrash_post' ] );
}
add_action( 'before_delete_post', [ $this, 'delete_application_files' ] );
add_action( 'job_applications_purge', [ $this, 'job_applications_purge' ] );
add_filter( 'post_class', [ $this, 'add_applied_post_class' ], 10, 3 );
add_action( 'transition_post_status', [ $this, 'transition_post_status' ], 10, 3 );
}
...
} *тут должен был быть экземпляр*
Я пытался найти информацию в интернете, но все методы, что я нашёл, в моём случае не сработали.
Искал темы wp, которые используют те же плагины и изменяют положение этих элементов, но то что я увидел для меня пока слишком сложно и страшно.
Можете помочь и подсказать как удалить action [ $this, 'already_applied_message' ] в случае, когда нет доступа к экземпляру класса?