内联IF语句以回显CSS

时间:2021-03-22 作者:Marney Fontana

我的模板中有一行代码,我想添加css类;有视频“;如果该职位属于某一类别。

我正在尝试使用\' . ( if (in_category(42)) echo \'has-video\') ? \' 但我得到了一个语法错误,意外的“if”(T\\u if)

我的PHP不太好,我知道这很接近,但不是很好:/

以下是全部回音代码:

echo \'<section id="cooked-recipe-list-\' . $list_id_counter . \'" class="cooked-clearfix cooked-recipe-\' . $list_style . \' cooked-recipe-loader\' . ( in_array( $list_style, $masonry_layouts ) ? \' cooked-masonry\' : \'\' ) . ( isset($atts[\'columns\']) && $atts[\'columns\'] ? \' cooked-columns-\' . $atts[\'columns\'] : \'\' ) . \' \' . ( if (in_category(42)) echo \'has-video\') ? \'">\';

2 个回复
SO网友:Kirtan

这可能对你有帮助。。。

$video = (in_category ( 42 )) ? \'has-video\' : \'\';

echo \'<section id="cooked-recipe-list-\' . $list_id_counter . \'" class="cooked-clearfix cooked-recipe-\' . $list_style . \' cooked-recipe-loader\' . ( in_array( $list_style, $masonry_layouts ) ? \' cooked-masonry\' : \'\' ) . ( isset($atts[\'columns\']) && $atts[\'columns\'] ? \' cooked-columns-\' . $atts[\'columns\'] : \'\' ) . \' \' . $video. \'">\';
试试这个,让我知道。。

SO网友:fuxia

这里的具体问题是,您正在尝试嵌套echo 声明。这是无效的PHP。

但潜在的问题是你在WordPress模板中经常看到的:以可读性为代价的字符串过于复杂。这里有一种可供选择的样式来获取更易于阅读的输出。您可以在模板的任何地方使用它。

首先设置变量,然后创建字符串。这样,您的代码更容易理解,因此也更容易更改。同时使用esc_attr() 当您在代码中使用来自其他源的变量时。

$id      = esc_attr( \'cooked-recipe-list-\' . $list_id_counter );

// Basic classes
$classes = [
    \'cooked-clearfix\',
    \'cooked-recipe-\' . $list_style,
    \'cooked-recipe-loader\'
];

// Now extend the classes, step by step
if ( in_array( $list_style, $masonry_layouts ) )
    $classes[] = \'cooked-masonry\';
    
// empty() includes an "isset" check
if ( ! empty ( $atts[\'columns\'] ) )
    $classes[] = \'cooked-columns-\' . $atts[\'columns\'];
    
if ( in_category(42) )
    $classes[] = \'has-video\';
    
// convert classes to a string
$classes = implode( \' \', $classes );
// Make sure no nasty code is in there
$classes = esc_attr( $classes );
    
// And finally print a simple string
print "<section id=\'$id\' class=\'$classes\'>";
是的,有点长。但是,当你想做出改变的时候,你永远不必去搜索什么,你会有评论向以后的你解释一切。