J'utilise un thème personnalisé, non développé par moi-même, qui semble avoir été désactivé/ou qui ne possède pas la fonction pour tous les codes courts, qu'il s'agisse d'un shortcode WordPress ou d'un plugin. J'ai surtout besoin de cette fonction pour fonctionner via un code court généré par un plugin. J'ai vérifié plusieurs choses pour voir ce qui le cause, mais je n'ai pas eu la chance de trouver où était le problème. Voici ce que j'ai vérifié.
Lorsque je suis revenu au thème de 2012, les codes courts ont bien fonctionné.
J'ai désactivé tous mes autres plugins pour vérifier si cela était dû à une incompatibilité. Pas de changement.
Je me suis assuré que le modèle de page a la bonne boucle d'après ce post: les codes courts de plug-in ne fonctionnent pas sur un thème personnalisé - vous ne savez pas comment résoudre ce problème
* Edit: Voici le code pour le modèle de page
<?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 // while ( have_posts() ) : the_post();
if(get_the_content()){
?>
<?php if(get_the_ID() == 1228) { ?>
<h1>Forms</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; // end of the loop. ?>
</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>News & Information</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']; ?>">Read More</a></div>
</article>
</div>
</div>
</section>
<?php else:?>
<?php
include('testimonials.php');
?>
<?php endif;?>
</aside>
</div>
</div>
<?php get_footer(); ?>
Il est possible que le développeur d'origine ait simplement réutilisé un thème développé pour une version antérieure de WordPress alors que les codes courts n'existaient pas.
Des idées où chercher ensuite?
J'ai donc enfin trouvé une solution !!! Après plusieurs semaines de recherche et d’essai de solutions différentes, il s’agissait simplement de supprimer "get_" d’une référence à "the_content" dans mon 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()); ?>
Pour ça
<?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()); ?>
Jusqu'à présent, je n'ai eu aucun problème et tous les codes courts fonctionnent maintenant. Merci à tous les autres pour leur contribution, sans cela je n’aurais pas su où et quoi chercher.
Votre boucle est correcte. Il utilise 'the_content' (comme il se doit) qui devrait déclencher les filtres the_content
et vos codes abrégés doivent être traités exactement comme dans les autres thèmes que vous avez essayés.
Je dois conclure que votre thème est enlever les filtres ou shortcodes . Cherchez quelque chose comme remove_filter( 'the_content',
dans vos fichiers de thème. Recherchez également add_filter('the_content',
. Recherchez ensuite remove_shortcode
et voyez ce qu’il pourrait être en train de supprimer.
Peut-être le thème ajoute-t-il un filtre qui casse les codes abrégés, mais je parierais sur l'un des deux premiers.