Не удалось получить обновление / опубликовать сообщение об ошибке, хотя страница обновляется / публикуется

Мой плагин WordPress заставляет редактор страниц / постов отображать уведомление об ошибке обновления / публикации, когда вы нажимаете «опубликовать / обновить» на странице / записи со встроенным шорткодом, однако данные является обновляется / публикуется.

Я включил WP_DEBUG и WP_DEBUG_LOG, но они не очень полезны, так как единственная сообщаемая ошибка заключается в следующем:

PHP Notice:  edit_form_advanced is <strong>deprecated</strong> since version 5.0.0! Use block_editor_meta_box_hidden_fields instead. This action is still supported in the classic editor, but is deprecated in the block editor. in /wp-includes/functions.php on line 4112

Я проверил файл, но это, как вы видите, файл ядра WP, а функция — просто регистратор ошибок.

Я знаю, что проблема заключается в редакторе Гутенберга, поскольку плагин работает, как и ожидалось, в классическом редакторе.

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

Код, который я считаю актуальным, находится здесь:

function enu_explorer_shortcode() {
$output = '';
include_once "eurno_include_file.php";
begin_eurno_explorer();
return $output;
}
add_shortcode( 'eurno_explorer', 'enu_explorer_shortcode' );

и код из файла eurno_include_file.php находится здесь:

function begin_eurno_explorer() {
if (!isset($_GET['action'])) {
if(((!empty(key($_GET))) && (!isset($_GET['preview']))) ){
$chainName = key($_GET);
if(isset($_GET[$chainName])){
$name = $_GET[$chainName];
}
if(isset(get_option('eurno_explorer')['eurno_data']['api'][$chainName][0])){
$api = get_option('eurno_explorer')['eurno_data']['api'][$chainName][0];
}
if(!isset(get_option('eurno_explorer')['eurno_data']['api'][$chainName][0])) {
$api = 'https://enu.qsx.io:443';
}
} else {
$chainName = 'enu';
$api = 'https://enu.qsx.io:443';
}
$output = (include "header.php");
$output .= (include "config/search.php");
if((isset($_GET[$chainName])) && (empty($_GET[$chainName])) || (!isset($_GET[$chainName]))) {
$output .= (include "config/chain-info.php");
$output .= (include "config/block-producers.php");
return;
} elseif(isset($_GET[$chainName]) && (strlen($_GET[$chainName]) === 64) && (ctype_xdigit($_GET[$chainName]))) {
$output .= (include "config/transaction.php");
return;
} elseif((isset($_GET[$chainName])) && (strlen($_GET[$chainName]) <= 12)){
$output .= (include 'config/recent-transactions.php');
return;
}
$term = implode(", ", $_GET);
$chain = key($_GET);

$output .= '<div class="card border border-danger mt-5">';
$output .= '<div class="card-header alert alert-danger">';
$output .= 'Showing results for: '.$term.' on: ' . $chain;
$output .= '</div>';
$output .= '<div class="card-body">';
$output .= '<div class="p-4">';
$output .= '<h4>Well, this is embarassing.</h4>';
$output .= '<p>We can\'t seem to find anything for <b>'.$term.'</b> on the <b>'.$chain.'</b> blockchain. Are you sure you have entered a valid transaction ID or account name?.</p>';
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
}
}

Если вы хотите более подробно изучить код плагина, его можно найти по адресу: https://github.com/eurno/eurno-explorer

Заранее спасибо, это действительно ценится.

0

Решение

Оказалось, что, хотя я назначал свой вывод переменной, которую я возвращал, я в конечном итоге все же отражал свои данные в долгосрочной перспективе. Чтобы решить проблему без переписывания большей части моего кода, мне пришлось использовать буферизацию вывода, так что теперь

function enu_explorer_shortcode() {
$output = '';
include_once "eurno_include_file.php";
begin_eurno_explorer();
return $output;
}
add_shortcode( 'eurno_explorer', 'enu_explorer_shortcode' );

к этому:

function enu_explorer_shortcode() {
ob_start();
include_once "eurno_include_file.php";
begin_eurno_explorer();
$eurno_explorer_output = ob_get_clean();
return $eurno_explorer_output;
}
add_shortcode( 'eurno_explorer', 'enu_explorer_shortcode' );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]