Проблема повторения рукопожатия WordPress

У меня есть небольшая проблема при использовании wordpress hook. Я хотел бы отправить электронное письмо или какую-нибудь бизнес-логику, например, отправить данные post в api, когда пользователь будет просматривать один блог. Код работает хорошо, но он работает три раза. ** Я понятия не имею, почему WordPress-перехватчик работает более одного раза. ** Я нашел это, когда я перешел в Google WordPress Plugin API / Action Infinite loop .

Но я не уверен, что нам нужно будет сначала добавить remove_action , всякий раз, когда мы хотели бы позвонить, чтобы предотвратить бесконечный цикл.

Есть ли лучший способ решить эти проблемы?

Вот мои коды

<?php class ZB_API_WORKER { public $mail_subject; public $mail_message; public function init() { add_action( 'single_template', array( $this, 'send_single_page_data' ), 100 ); } /** * @return bool * * @description Sending data when user view in single page */ public function send_single_page_data() { global $post; if ( is_user_logged_in() && is_singular('post') && ! is_admin() ) { try { $this->send_mail( $this->mail_subject = "Request time checking", $this->mail_message = 'hook single view has been updated!' ); } catch ( Ex\ApiTimeoutException $e ) { // } catch ( Ex\ResponseException $e ) { // } catch ( Ex\ApiException $e ) { // } } else { return false; } } public function send_mail() { $to = 'user@yourdomain.com'; $headers = array( 'Content-Type: text/html; charset=UTF-8' ); wp_mail( $to, $this->mail_subject, $this->mail_message, $headers ); } } $api_class = new ZB_API_WORKER(); $api_class->init();