& quot; Утилиты, зарегистрированные для `I_Display_Type_Controller`, не зарегистрированы & quot; на следующей галерее AJAX вызова WordPress

Я пытаюсь загрузить галерею nextgen через ajax, но вместо этого получаю эту ошибку

Я много чего перепробовал, и это все ближе и ближе

function noix_galeria_click() {
// check nonce
$nonce = $_POST['nextNonce'];
if ( ! wp_verify_nonce( $nonce, 'myajax-next-nonce' ) )
die ( 'Busted!');

$cobertura = get_post_meta($_POST['postId'], 'id_da_galeria', true);;
echo nggShowGallery($galeria);
exit;
}

это возвращается как ответ

<h1>Exception thrown</h1><p>No utilities registered for `I_Display_Type_Controller`</p>

работает ajax, пробовал с wp_queries и кучей всего, все работает, все, кроме галереи nextgen

Я думаю, что это кусок кода, сообщающий об ошибке

function _retrieve_utility_class($interface, $context='all')
{
$class = FALSE;

if (!$context) $context = 'all';
if (isset($this->_utilities[$interface])) {
if (isset($this->_utilities[$interface][$context])) {
$class = $this->_utilities[$interface][$context];
}

// No utility defined for the specified interface
else {
if ($context == 'all') $context = 'default';
$class = $this->_retrieve_utility_class($interface, FALSE);
if (!$class)
throw new Exception("No utility registered for `{$interface}` with the `{$context}` context.");

}
}
else throw new Exception("No utilities registered for `{$interface}`");

return $class;
}

Что еще я могу попробовать?

РЕДАКТИРОВАТЬ—
Я попытался посмотреть на эти вызовы методов и изменил этот файл
WP-содержание / плагины / NextGen-галерея / Продукты / photocrati_nextgen / модули / nextgen_gallery_display / module.nextgen_gallery_display.php
находясь в поиске !is_admin() изменено на true (для теста), а ошибка изменена на:

<h1>Default Gallery Type Template</h1>
<p>
This is the default gallery type template, located in:<br/>
<b>/home/ian/Sites/portalsabores/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/templates/index.php</b>.
</p>
<p>

Я попытался указать шаблон: echo nggShowGallery($galeria, 'coberturas', 8); но ничего не изменилось

кажется, что это связано с тем, что WordPress AJAX API делает звонки администратора https://wordpress.stackexchange.com/questions/53309/why-might-a-plugins-do-shortcode-not-work-in-an-ajax-request

есть способ изменить это?

2

Решение

этот ответ позволил мне:
https://wordpress.stackexchange.com/questions/96026/nextgen-gallery-how-to-get-picture-url-by-gallery-id

Я изменил возврат AJAX на часть шаблона, используя Просмотр темы SMK, действие ajax стало:

function noix_galeria_click() {
// check nonce
$nonce = $_POST['nextNonce'];
if ( ! wp_verify_nonce( $nonce, 'myajax-next-nonce' ) )
die ( 'Busted!');

$cobertura = get_post_meta($_POST['postId'], 'id_da_galeria', true);

ob_start();
?>
<?php smk_get_template_part('parts/coberturas/galeria-principal.php', array(
'galeria' => $cobertura,
'post_id' => $_POST['postId']
)); ?>
<?php
$output = ob_get_contents();
ob_end_clean();
echo $output;
die();
}

с помощью smk вы можете отправлять переменные через функцию get_template_part

На galeria-principal.php я имею

<?php
global $nggdb;

$gall_ids = $nggdb->get_ids_from_gallery($this->galeria); // smk allow you to return the variables as properties of $this
$images = $nggdb->find_images_in_list($gall_ids); // see these methods at
// wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/lib/ngg-db.php
// then build the template
$evento = get_post($this->post_id);
?>
<...>
<?php foreach ($images as $image): ?>
<?php
// I build this path because imageURL was empty, not sure why
$file_path = get_home_url() .$image->_ngiw->_cache['path'] . '/' . $image->_ngiw->_cache['filename'];
$file_desc = $image->_ngiw->_cache['description'];
?>
<li>
<img src="<?php echo $file_path ?>" alt="<?php echo $file_desc ?>">
</li>
<?php endforeach ?>

<...>

Это будет правильно работать с AJAX

0

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

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

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