这里的具体问题是,您正在尝试嵌套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\'>";
是的,有点长。但是,当你想做出改变的时候,你永远不必去搜索什么,你会有评论向以后的你解释一切。