我一直试图摆脱这个问题几天。我知道问题出在哪里,但无法弄清楚如何解决问题。请先看一下代码:
function portfolio_list_shortcode($atts){
$q = new WP_Query(
array('posts_per_page' => -1, 'post_type' => 'portfolio')
);
$list = '$terms = get_terms("portfolio_cat");
$count = count($terms);
echo '<div id="wrap"><div class="filtering"><div class="filter" data-filter="all">Show All</div>';
if ( $count > 0 ){
foreach ( $terms as $term ) {
$termname = strtolower($term->name);
$termname = str_replace(' ', '-', $termname);
echo '<div class="filter" data-filter=".'.$termname.'">'.$term->name.'</div>';
}
}';
$list.= '</div><div id="Container">';
while($q->have_posts()) : $q->the_post();
$idd = get_the_ID();
$list .= '<div class="mix '.$termname.'">'.get_the_post_thumbnail('portfolio-thumb').'</div>';
endwhile;
$list.= '</div></div>';
wp_reset_query();
return $list;
}
add_shortcode('portfolio', 'portfolio_list_shortcode');
运行上面的代码会导致以下错误:
Parse error: syntax error, unexpected 'id' (T_STRING)
我如何摆脱echo ' ';
,因为我已在return ' '
由于
答案 0 :(得分:0)
我对wordpress知之甚少,也不知道它为什么会这样,但嵌套引号三次可能会让人很困惑,如果可能的话应该避免使用。
您的示例中的PHP在以下几个方面无效:
它需要一些彻底的修复,但如果不解释函数应该做什么,我就无法回答。它应该返回任何东西,如果是,它应该返回什么?
假设它不应该返回任何内容,只是打印一些HTML,你可能会寻找这样的东西:
function categories() {
$terms = get_terms("portfolio_cat");
$count = count($terms);
echo '<li><a href="javascript:void(0)" title="" data-filter=".all" class="active">All</a></li>';
if ( $count > 0 ){
foreach ( $terms as $term ) {
$termname = strtolower($term->name);
$termname = str_replace(' ', '-', $termname);
echo '<li><a href="javascript:void(0)" title="" data-filter=".'.$termname.'">'.$term->name.'</a></li>';
}
}
}
处理凌乱的代码时,一个很好的提示是使用带语法高亮的文本编辑器。它可以更容易地发现缺失和未转义的引号,分号,拼写错误的函数名称和缺少大括号。为此,我强烈推荐使用Notepad ++或SumblimeText。