Все шорткоды не работают в пользовательской теме
Я использую пользовательскую тему, разработанную не мной, которая, похоже, отключила или не имеет функции для всех шорткодов, будь то шорткоды WordPress или шорткоды плагинов. Мне в основном нужно, чтобы эта функция работала через шорткоды, генерируемые плагином. Я проверил несколько вещей, чтобы понять, что вызывает проблему, но не смог найти причину. Вот что я проверил.
Когда я переключился обратно на тему 2012, шорткоды работали нормально.
Я отключил все остальные плагины, чтобы проверить, не связано ли это с какой-либо несовместимостью. Изменений нет.
Я убедился, что шаблон страницы имеет правильный цикл согласно этому посту: шорткоды плагинов не работают в пользовательской теме - не знаю как исправить
*Редактирование: Вот код шаблона страницы
<?php get_header(); ?>
<div id="main">
<div class="layout">
<div id="content">
<aside id="block_menu_like_division">
<section>
<h1 id="title_like_division"></h1>
<nav id="nav_like_division">
</nav>
</section>
</aside>
<section>
<article>
<?php // пока ( have_posts() ) : the_post();
if(get_the_content()){
?>
<?php if(get_the_ID() == 1228) { ?>
<h1>Формы</h1>
<?php the_content(); ?>
<?php }elseif(get_the_ID() == 1191){ ?>
<!-- <h5> </h5> -->
<?php the_content(); ?>
<?php }else{ ?>
<h1><?php the_title(); ?></h1>
<?php
function sup($text){
$true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
return $true;
}
echo sup(get_the_content()); ?>
<?php } ?>
<?php }else{
$arg = query_posts(array('post_parent' => get_the_ID(), 'post_type' => 'page', 'posts_per_page'=>1, 'orderby' => 'menu_order', 'order' => 'ASC' ));
// $arg[0]->guid;
?>
<?php if($arg[0]->ID == 1811):?>
<?php
$ag = query_posts(array('post_parent' => $arg[0]->ID, 'post_type' => 'page','posts_per_page'=>1, 'orderby' => 'menu_order', 'order' => 'ASC' ));
?>
<h1><?php echo $ag[0]->post_title; ?></h1>
<?php echo $ag[0]->post_content; ?>
<?php else:?>
<h1><?php echo $arg[0]->post_title; ?></h1>
<?php echo $arg[0]->post_content; ?>
<?php endif;?>
<?php }?>
<?php // endwhile; // конец цикла. ?>
</article>
</section>
</div>
<aside>
<?php include('quick_links.php'); ?>
<?php
$url = $_SERVER['REQUEST_URI'];
$url_parse = parse_url($url);
$level = explode('/', $url_parse['path']);
if($level[1] == 'education' || $level[1] == 'fellowship'):?>
<?php
$catid = get_query_var('cat');
$s = query_posts( array(
'post_type' => 'post',
'post_status' => 'publish',
'category' => 'news',
'posts_per_page' => 0,
'orderby' => 'post_date',
'order' => 'DESC'));
while( have_posts() ) : the_post();
$newsList[] = array(
'title' => get_the_title(),
'link' => apply_filters('the_permalink', get_permalink()),
'date' => apply_filters('the_time', get_the_time( 'F j, Y' ), 'F j, Y'),
'expert' => apply_filters('the_excerpt', get_the_excerpt()),
'author' => get_the_author(),
);
endwhile;
wp_reset_query();
?>
<section>
<h2>Новости и информация</h2>
<div id="asideNews" class="itemsList">
<div class="listItem">
<article>
<header>
<h3><a href="<?php echo $newsList[0]['link']; ?>"><?php echo $newsList[0]['title']; ?></a></h3>
</header>
<p><?php echo $newsList[0]['expert']; ?></p>
<div class="readmore"><a href="<?php echo $newsList[0]['link']; ?>">Читать далее</a></div>
</article>
</div>
</div>
</section>
<?php else:?>
<?php
include('testimonials.php');
?>
<?php endif;?>
</aside>
</div>
</div>
<?php get_footer(); ?>
Есть вероятность, что первоначальный разработчик просто повторно использовал тему, разработанную для более старой версии WordPress, когда шорткоды еще не существовали.
Есть идеи, где искать дальше?
Итак, я наконец-то нашел решение!!! После многих недель поисков и проб различных вариантов, оказалось, что нужно просто убрать "get_" из ссылки на "the_content" в моем файле page.php. Я изменил это:
<?php
function sup($text){
$true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
return $true;
}
echo sup(get_the_content()); ?>
На это:
<?php
function sup($text){
$true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
return $true;
}
echo sup(the_content()); ?>
Пока что никаких проблем не возникло, и все шорткоды теперь работают. Спасибо всем, кто поделился своими идеями — без этого я бы не знал, где и что искать.

Ваш цикл (Loop) выполнен правильно. Он использует 'the_content' (как и должно быть), что должно запускать фильтры the_content
, и ваши шорткоды должны обрабатываться так же, как и в других темах, которые вы пробовали.
Я прихожу к выводу, что ваша тема либо удаляет фильтры, либо шорткоды. Поищите в файлах вашей темы что-то вроде remove_filter( 'the_content',
. Также проверьте наличие add_filter('the_content',
. Затем поищите remove_shortcode
и посмотрите, что именно удаляется.
Возможно, тема добавляет фильтр, который ломает шорткоды, но я бы поставил на один из первых двух вариантов.
