Пользовательский блок / шорткод / ​​поиск в меню навигации на основе блоков WordPress?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский блок / шорткод / ​​поиск в меню навигации на основе блоков WordPress?

Сообщение Anonymous »

У меня есть сайт WordPress, в настоящее время расположенный локально с XAMPP. На сайте у меня есть страница «Продукты» с детской информацией о продукте ». В продуктах у меня есть шорткод для отображения контента (заголовок и абзаца), динамически на основе пользовательской таблицы «Product_list» в базе данных. Нажав на заголовок продукта, я передаю страницу «Запрос» на «Detail», на этой детской странице у меня есть еще один шорт-код, чтобы динамически отобразить детали продукта, используя запрос в качестве ключа. Все работает чудесно. < /P>
Проблема: < /h1>
Это приводит к общей странице Структуры: страница продуктов (родитель) и страница сведений о продукте (ребенок), которая в меню навигации показывает в виде раскрывающегося меню из продуктов. Пример: пример навигации.
Я не могу найти способ либо ввести навигацию произвольно, заменить блоки в нем, либо определить шорткод. (См. Позже, что я попробовал).
Что я хочу:
Я хочу иметь возможность получить доступ к меню навигации, чтобы динамически добавлять ссылки в выпадающем списке продуктов, поэтому я могу добавить запись для каждого продукта и/или группировать их свойствами, например, у каждого продукта есть свойство «размер», и я могу группировать продукты, основанные на этом свойстве. Попробовал:
Я попытался восстановить весь навигационный блок, но я просто не мог даже перехватить его и супер грязный код.
Затем я попытался зацикнуть блоки с визуализированной страницы, но это тоже не сработало. Мой собственный контент, вероятно, шорткод. Прямо сейчас я смог добавить шорт -код в меню навигации, но только в конце с смещением: < /p>

Код: Выделить всё

function theme_render_shortcode_block() {
return do_shortcode( '[navigation_product_list]' );
}

function theme_register_shortcode_block() {
if ( function_exists( 'register_block_type' ) ) {
register_block_type( 'theme/products-shortcode-block', array(
'title' => 'Products Shortcode Block',
'icon' => 'shortcode',
'render_callback' => 'theme_render_shortcode_block'
) );
}
}
add_action( 'init', 'theme_register_shortcode_block' );

add_filter( 'block_core_navigation_render_inner_blocks', function( $inner_blocks ) {
$menu_item = new WP_Block( array(
'blockName' => 'theme/products-shortcode-block'
) );

$inner_blocks->offsetSet( null, $menu_item );

return $inner_blocks;
} );
Это заставляет меня помещать шорткод в блок навигации в все навигационные блоки , даже другие, которые я использую в нижнем колонтитуле, которые не используют лист Block-page-лист WP. Я хочу, чтобы он положил его в блок-лист WP-Block-Page, поэтому я попробовал что-то подобное, чтобы заменить ссылку на страницу продукта детали на шорткод: < /p>
add_filter( 'block_core_navigation_render_inner_blocks', function( $inner_blocks ) {
$target_menu_item_label = 'Product Details';

foreach ( $inner_blocks as $index => $block ) {
// Find the block with "Product Details" label.
if ( isset($block->parsed_block['attrs']['label']) && $block->parsed_block['attrs']['label'] === $target_menu_item_label ) {

// Replace it with shortcode block.
$replacement_block = new WP_Block( array(
'blockName' => 'theme/products-shortcode-block'
) );

$inner_blocks[ $index ] = $replacement_block;

break;
}
}
return $inner_blocks;
} );
< /code>
Я попытался нацелить этикетку «Детали продукта», но он ничего не делает.
Для контекста блок-блок-шорт-код продуктов выполняет короткий код, который создает с динамическим содержанием на основе таблицы баз данных. Я хочу поместить это в правильное место.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ation-menu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»