web-dev-qa-db-fra.com

le shortcode ne fonctionne pas et la relation avec the_content ()

Référence Post (J'ai même été voté ici.)

Mon code abrégé ne fonctionnait pas sur mon thème personnalisé, mais le même code abrégé, lorsqu'il était utilisé dans vingt-quinze, fonctionnait.

J'ai effectué des recherches sur Google et découvert qu'il s'agissait d'un problème lié à une utilisation incorrecte de the_content.

  1. https://kb.yoast.com/kb/shortcodes-not-rendering/
  2. https://wordpress.org/support/topic/shortcodes-not-working-custom-theme/

J'ai appliqué la solution suggérée dans le Yoast →

cela signifie que j'ai changé de

<?php the_content(); ?>

À

<?php echo apply_filters( 'the_content', $post->post_content ); ?>

Mais quand même, les codes courts ne fonctionnent pas.

quelle est la solution de travail?

J'ai ce code dans single.php →

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                            <?php $post_id = get_the_ID(); ?>
                            <?php get_template_part('content',get_post_format()); ?>
                        <?php endwhile; ?>
                        <?php endif; ?>

et dans content.php →

<?php the_content(); ?>

 enter image description here 

SUR LA PAGE EN DIRECT →

 enter image description here 

Code court complet →

function simplisto_the_image($atts) {
    $atts = shortcode_atts( array(
        'to' => 'https://pics.wikifeet.com/Melania-Trump-Feet-720891.jpg'
    ), $atts);
    $output = '<div class="lazyimg">';
            $output .= '<img class="lazyimg-popup" src="'.$atts['to'].'" alt="The First Caption" width="100%" height="auto">';
        $output .= '<i class="fa fa-expand" aria-hidden="true"></i>';
    $output .= '</div>';
    return $output;
}

function register_shortcodes(){
   add_shortcode('simage', 'simplisto_the_image');
}

add_action( 'init', 'register_shortcodes');
1
The WP Novice

Excuse une brève réponse (écriture sur train dans un iPhone), mais j’essaierais de remplacer get_template_part() par son équivalent non-WordPress include() car, de mémoire, les variables déclarées hors de votre content.php ne seront pas disponibles autrement.

2
onebc