Как загружать шорткод в зависимости от выбранного таба?

Почему-то в итоге отображаются ссылки на pdf файлы, вместо того чтобы отображаться сами файлы. В случае если я вставляю шорткод напрямую в верстку, pdf файлы отображаются корректно. Ниже представлен код, который использовался:

```php
<div class="tabs-price-header">
	<ul>
		<?php 
		$active_class = 'active';
		while($price_query->have_posts()) : $price_query->the_post(); ?>
			<li class="<?php echo $active_class; ?>"><button data-id="<?php echo get_the_ID(); ?>"><?php echo get_the_title(); ?></button></li>
			<?php $active_class = ''; // Убираем класс активности со следующих элементов ?>
		<?php endwhile; ?>
		<?php wp_reset_postdata(); ?>
	</ul>
</div>

<div id="tabs-price-content" class="tabs-price-content"></div>
```

```php
add_action( 'wp_ajax_load_pdf_content', 'load_pdf_content' );
add_action( 'wp_ajax_nopriv_load_pdf_content', 'load_pdf_content' );

function load_pdf_content() {
  $post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
  
  switch ($post_id) {
    case 92:
      echo apply_filters('the_content', '[pdf-embedder url="https://lasercare.moscow/wp-content/uploads/2024/05/kompleksy-210-x-297-mm.pdf" title="Диодная эпиляция"]');
      break;
    case 384:
      echo apply_filters('the_content', '[pdf-embedder url="https://lasercare.moscow/wp-content/uploads/2024/05/kompleksy-210-x-297-mm-3-1.pdf" title="Смас-лифтинг"]');
      break;
    case 385:
      echo apply_filters('the_content', '[pdf-embedder url="https://lasercare.moscow/wp-content/uploads/2024/05/kompleksy-210-x-297-mm-2-1.pdf" title="Холодная плазма"]');
      break;
```

Как можно исправить код, чтобы отображались сами pdf файлы, а не только ссылки на них?
  • 18 мая 2024 г. 19:01
Ответы на вопрос 2
Проблема заключается в том, что когда вы вызываете шорткоды внутри функции `load_pdf_content`, они не обрабатываются корректно, так как они не проходят через обработку контента WordPress. Для правильного отображения PDF файлов вам нужно изменить вашу функцию `load_pdf_content` следующим образом:

```php
function load_pdf_content() {
  $post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;

  switch ($post_id) {
    case 92:
      $pdf_url = 'https://lasercare.moscow/wp-content/uploads/2024/05/kompleksy-210-x-297-mm.pdf';
      echo '<iframe src="'. esc_url($pdf_url) .'" width="100%" height="600"></iframe>';
      break;
    case 384:
      $pdf_url = 'https://lasercare.moscow/wp-content/uploads/2024/05/kompleksy-210-x-297-mm-3-1.pdf';
      echo '<iframe src="'. esc_url($pdf_url) .'" width="100%" height="600"></iframe>';
      break;
    case 385:
      $pdf_url = 'https://lasercare.moscow/wp-content/uploads/2024/05/kompleksy-210-x-297-mm-2-1.pdf';
      echo '<iframe src="'. esc_url($pdf_url) .'" width="100%" height="600"></iframe>';
      break;
  }
  wp_die();
}
```

В этом случае мы просто выводим `<iframe>`, в который подставляем ссылку на PDF файл. Помните о безопасности и экранируйте URL с помощью функции `esc_url()`.

Теперь ваши PDF файлы должны отображаться корректно при загрузке содержимого в зависимости от выбранного таба.
echo do_shortcode
Похожие вопросы