如果函数中的POST粘滞,则变量。php

时间:2017-03-15 作者:Eric Mitjans

我正在构建一个短代码来显示页面中的某些帖子。目前看起来是这样的:

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\' );  
不过,我想添加一个条件,以便在帖子有粘性时定义列宽。

我尝试了以下操作,但出现了一个错误:

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>\';
} 
上面写着:Parse error: syntax error, unexpected \'}\' in ...

我做错了什么?

1 个回复
最合适的回答,由SO网友:rudtek 整理而成

这可能比你想象的要容易。您正在编写的代码缺少尾行撇号:

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

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

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默