Shortcode-urile nu funcționează pe tema personalizată
Folosesc o temă personalizată care nu a fost dezvoltată de mine și care pare să fi dezactivat sau nu are funcția pentru toate shortcode-urile, fie că sunt shortcode-uri WordPress sau shortcode-uri generate de plugin-uri. Am nevoie în special ca această funcționalitate să meargă pentru shortcode-urile generate de plugin-uri. Am verificat mai multe lucruri pentru a vedea ce cauzează problema, dar nu am avut noroc să găsesc sursa. Iată ce am verificat.
Când am revenit la tema 2012, shortcode-urile au funcționat corect.
Am dezactivat toate celelalte plugin-uri pentru a verifica dacă era din cauza vreunei incompatibilități. Nicio schimbare.
M-am asigurat că template-ul paginii are bucla corectă conform acestei postări: shortcode-urile plugin-urilor nu funcționează pe tema personalizată - nu știu cum să rezolv
*Editare: Aici este codul pentru template-ul paginii
<?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 // în timp ce ( have_posts() ) : the_post();
if(get_the_content()){
?>
<?php if(get_the_ID() == 1228) { ?>
<h1>Formulare</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; // sfârșitul buclei. ?>
</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>Știri & Informații</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']; ?>">Citește mai mult</a></div>
</article>
</div>
</div>
</section>
<?php else:?>
<?php
include('testimonials.php');
?>
<?php endif;?>
</aside>
</div>
</div>
<?php get_footer(); ?>
Există posibilitatea ca dezvoltatorul original să fi refolosit pur și simplu o temă dezvoltată pentru o versiune mai veche de WordPress, când shortcode-urile nu existau.
Aveți idei unde să mai caut?
Așa că în sfârșit am găsit soluția!!! După multe săptămâni de căutare și încercare a diferitor soluții, totul s-a rezumat la eliminarea lui "get_" din referința către "the_content" în fișierul meu page.php. Am schimbat asta:
<?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()); ?>
În asta:
<?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()); ?>
Până acum nu am întâmpinat probleme, iar toate shortcode-urile funcționează acum. Mulțumesc tuturor pentru contribuțiile lor, fără ele nu aș fi știut unde și ce să caut.

Bucla ta este corectă. Folosește 'the_content' (așa cum ar trebui), care ar trebui să declanșeze filtrele the_content
și shortcode-urile tale ar trebui să fie procesate la fel ca în celelalte teme pe care le-ai încercat.
Trebuie să concluzionez că tema ta îndepărtează filtrele sau shortcode-urile. Caută ceva similar cu remove_filter( 'the_content',
în fișierele temei tale. Verifică și pentru add_filter('the_content',
. Apoi caută remove_shortcode
și vezi ce ar putea fi eliminat.
Este posibil ca tema să adauge un filtru care strică shortcode-urile, dar aș paria pe una dintre primele două variante.
