web-dev-qa-db-fra.com

Variable si post est collant dans functions.php

Je construis un shortcode pour afficher certains messages dans une page. Jusqu'ici, cela ressemble à ceci:

function bloghome( $atts ) {
    extract( shortcode_atts( array(
        'id' => 17      // Add the *default category id
    ), $atts ) );

    $posts = get_posts( array(
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'cat'       => $id,
    ) );
    $return = '';
    $return .= '<div class="row page-template-press bloghome">';
    foreach ( $posts as $post ) {
        $link = get_permalink( $post->ID);
        $title =  get_the_title($post->ID);
        $img =  get_the_post_thumbnail( $post->ID, 'medium' );
        $snippet = get_post_meta($post->ID, 'Snippet', true);
        $return .= '<article class="col-lg-'.$width.' col-md-'.$width.' col-sm-'.$width.'"><a href="'.$link.'"><header><div class="page-title-post">'.$title.'</div></header><div class="entry-content">'.$img.'<p class="snippet">'.$snippet.'</p></div></a></article>';
    } 

$return .= '</div>';
return $return;
}
add_shortcode( 'bloghome', 'bloghome' );  

Je veux ajouter une condition cependant, pour définir la largeur de la colonne si le post est collant.

J'ai essayé ce qui suit, mais cela génère une erreur:

foreach ( $posts as $post ) {
    if ( is_sticky() ) {
        $width = '12'
    } else {
        $width = '4'
    };
    $link = get_permalink( $post->ID);
    $title =  get_the_title($post->ID);
    $img =  get_the_post_thumbnail( $post->ID, 'medium' );
    $snippet = get_post_meta($post->ID, 'Snippet', true);
    $return .= '<article class="col-lg-'.$width.' col-md-'.$width.' col-sm-'.$width.'"><a href="'.$link.'"><header><div class="page-title-post">'.$title.'</div></header><div class="entry-content">'.$img.'<p class="snippet">'.$snippet.'</p></div></a></article>';
} 

Il dit: Parse error: syntax error, unexpected '}' in ...

Qu'est-ce que je fais mal?

1
Eric Mitjans

c'est peut-être plus facile que vous ne le pensiez. Vous codez il manque des apostrophes de fin de ligne:

foreach ( $posts as $post ) {
    if ( is_sticky() ) {
        $width = '12'
    } else {
        $width = '4'
    };

devrait être

foreach ( $posts as $post ) {
    if ( is_sticky() ) {
        $width = '12';
    } else {
        $width = '4';
    };
1
rudtek