@nastyskafomka

Плагин WP выполняется несколько раз, почему?

Здравствуйте, делаем плагин для личного пользования, в данный момент выглядит так:
Код
<?php
/*
Plugin Name: Test
Plugin URI: https://test.ru
Description: Уведомления о новых записях
Version: 0.0.2
Author: Test
Author URI: https://test.ru
*/

const VERSION = '0.0.2';
include "/home/client/vendor/autoload.php";
use Telegram\Bot\Api;

add_action( 'publish_post', 'test_my_update');
add_action ('admin_menu','test_renderMenu');
add_action( 'admin_notices', 'test_showError');





function test_my_update( $post_id) {
    // If this is a revision, don't send the email.
    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }
    $post = get_post( $post_id );

    if ($post->post_type != "post") {
        return;
    } else {

        $post_title = $post->post_title;
        $post_content = $post->post_excerpt;
        $post_uri = $post->guid;

        $telegram = new Api(get_option ("test_telegram_token"));
        $telegram->sendMessage ([
            "chat_id" => get_option ("test_telegram_id"),
            "text" => "На сайте что-то новенькое: {$post_title}\nПодробнее по ссылке:\n{$post_uri}",
            "parse_mode" => "HTML"
        ]);
    }
}

function test_renderMenu(){
    add_options_page ('Уведомления о новых записях','Уведомления о новых записях',8,'notify','test_notifyRender');
}

function test_notifyRender(){
    echo '<h1>Уведомления о новых записях</h1>';
    add_option ('test_telegram_token','None');
    add_option ('test_telegram_id','None');
    add_option ('test_vk_token','None');

    echo '<h2>Изменение настроек</h2>';

    test_renderSettings();

    test_renderFooter();
}

function test_renderFooter() {
    echo "
        <p>Данная версия плагина все еще в разработке!</p>
        <p>Текущая версия: ".VERSION."</p>
        <p><a href='mailto:test@test.com?subject=Плагин версии ".VERSION."'>Написать письмо</a></p>
    ";
}

function test_renderSettings() {
    if (isset($_POST['test_opt_btn'])) {
        if (function_exists ("current_user_can") && !current_user_can ("manage_options")) {
            die(_e ("Ooops...","test"));
        }
        if (function_exists ("check_admin_referer")) {
            check_admin_referer ("test_notify_settings_form");
        }

        $telegram_token = $_POST['test_telegram_token'];
        $telegram_id = $_POST['test_telegram_id'];

        update_option ("test_telegram_token",$telegram_token);
        update_option ("test_telegram_id",$telegram_id);
    }


    $url = $_SERVER['PHP_SELF'].'?page=notify&amp;updated=true';
    echo '<p>Уведомления в Telegram</p>';
    echo "<form name='test_notify_settings' method='post' action='{$url}'>";

    if (function_exists ('wp_nonce_field')) {
        wp_nonce_field ('test_notify_settings_form');
    }
    echo "
    <p>
        <label for='test_telegram_token'>Токен Telegram</label><br>
    <input type='text' id='test_telegram_token' name='test_telegram_token' placeholder='Токен Telegram' value='".get_option ("test_telegram_token")."'>
    </p>
    <p>
        <label for='test_telegram_id'>id Канала, беседы куда слать уведомления</label><br>
    <input type='text' id='test_telegram_id' name='test_telegram_id' placeholder='id беседы Telegram' value='".get_option ("test_telegram_id")."'>
    </p>
    <p>
        <input type='submit' value='Сохранить' name='test_opt_btn'>
    </p>
    ";
    echo '<form>';
}

function test_showError() {
    if (get_option ("test_telegram_id") == null or get_option ("test_telegram_token") == null) {
        echo "<div class='error notice'><p>Вы не указали необходимые настройки для уведомлений, пожалуйста перейдите <a href='/wp-admin/options-general.php?page=notify'>сюда</a> для настройки.</p></div>";
    }
}



Проблема заключается в том, что при публикации новой записи, уведомление шлется два раза, вместо одного.

Сижу 2 час, не могу понять почему, может кто подскажет?

Событие о публикации новой записи ловлю так:
add_action( 'publish_post', 'test_my_update');

Заранее спасибо!
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
@nastyskafomka Автор вопроса
Решением на этот вопрос стал ответ Денис Янчевский

Не уверен, что это, но вдруг поможет. Ссыль
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы