Wordpress добавление функции на хук save_post

213
10 ноября 2021, 11:10

Проблема: После того, как я повесил функцию на хук save_post - сама функция и хук отрабатывается полностью. Запись и ее изменения сохраняются.

Но только почему то в самой странице редактирования вместо "Запись сохранена" - отображает "Ошибка обновления", но на самом деле запись была сохранена, а функция выполнена.

В консоли:

{code: "internal_server_error",…}
additional_errors: []
code: "internal_server_error"
data: {status: 500}
status: 500
message: "На сайте возникли временные проблемы технического характера."

functions.php

add_action( 'save_post', 'add_original_text');
function add_original_text( $post_ID ) {
    $webmaster = new WebmasterYandex();
    $webmaster->ajaxAddTextToYandex($post_ID);  
}

Class WebmasterYandex

public function ajaxAddTextToYandex($postId) {
        $postData = get_post($postId); 
        $this->sendTextToYandex( $postData->post_content );
    }
 public function sendTextToYandex($text) {
        $text = strip_tags($text);
        $text = htmlspecialchars($text);
        //$text = urlencode($text);
        $text = "<Data><content>{$text}</content></Data>";       
        $curlOptions = array(CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_POSTFIELDS => $text);
        $response = $this->performYandexWebmasterApiRequest2($url, $curlOptions);   
    }
public function performYandexWebmasterApiRequest2($curlOptions = array()) {
        $headers = array(
            'Content-type: application/xml;charset=UTF-8',
            'Authorization: OAuth ' . $this->getYandexToken()
        );
        $headers = array_merge($headers, $additionalHeaders);
        $requestOptions = array(
            CURLOPT_URL             => 'https://api.webmaster.yandex.net/v4/user/50045914/hosts/https:news.gsl.org:443/original-texts/',
            CURLOPT_SSL_VERIFYPEER  => 0,
            CURLOPT_HTTPHEADER      => $headers,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_CUSTOMREQUEST => 'POST'
        );
        if (count($curlOptions)) {
            foreach ($curlOptions as $curlOption => $curlOptionValue) {
                $requestOptions[$curlOption] = $curlOptionValue;
            }
        }
        $response = $this->getPage($requestOptions);
        return $response;
    }

Логи

PHP Fatal error:  Uncaught Error: Class 'WebmasterYandex' not found in C:\inetpub\wwwroot\projects\news\wp-content\themes\jnews\functions.php:1171

Почему по факту все отрабатывается хорошо - но Uncaught Error: Class 'WebmasterYandex' not found?

UPD: Решение

Надо в functions.php в самой функции сделать условие class_exists()

if ( class_exists( 'WebmasterYandex' ) ){
    $webmaster = new WebmasterYandex(); 
    $webmaster->ajaxAddTextToYandex($post_ID);  
}
Answer 1

UPD: Решение

Надо в functions.php в самой функции сделать условие class_exists()

if ( class_exists( 'WebmasterYandex' ) ){
    $webmaster = new WebmasterYandex(); 
    $webmaster->ajaxAddTextToYandex($post_ID);  
}
READ ALSO
Замeна Логина через RedBeanPHP

Замeна Логина через RedBeanPHP

Вроде написано как надо, но данные в базе не изменяются

104
php подключение переменных из другого файла

php подключение переменных из другого файла

Я создаю Вход и АвторизациюЯ почти закончил но возникла такая проблема

159
Загрузить изображение в base64 post-запросом на сайт с помощью nodejs и php

Загрузить изображение в base64 post-запросом на сайт с помощью nodejs и php

Как загрузить на сайт изображение в base64, отправив post-запрос с nodejs с именем изображения и самим base64?

80