在 HTML 字符串之间使用 Wordpress do_shortcode 时出现语法错误
Syntax Error when using Wordpress do_shortcode in between an HTML string
我在第 7 行遇到 "unexpected T_ECHO" 的语法错误,我检查了 PHP parse/syntax errors; and how to solve them 试图理解和解决该问题的线程.
但我似乎无法以我有限的 PHP 知识找到解决此问题的方法。
下面是我想要在我的 Woocommerce/Wordpress 网站上的代码片段。
我使用的是 答案代码的修改版本,它可以完美运行。
add_filter( 'woocommerce_available_variation', 'custom_outofstock_variation_addition', 10, 3 );
function custom_outofstock_variation_addition( $data, $product, $variation ) {
if( $variation->is_on_backorder() ){
$data['availability_html'] .= '<table class="variations mto-cont" cellspacing="0">
<tbody>
<tr>
<td class="made-to-order"><a> 'echo do_shortcode('[nm_lightbox title="Made to Order " content_image_id="5110"]');'</a></td>
</tr>
</tbody>
</table>';
}
return $data;
}
所以我希望达到的是让 Wordpress 在 <td class="made-to-order"><a>
和 </a></td>
之间做一个简码。
应该如何重写此代码才能使其正常工作?
您需要在 HTML 的字符串中 concatenate do_shortcode()
函数,而不是像 那样在其中使用 echo
(因为你在最后返回那个字符串):
add_filter( 'woocommerce_available_variation', 'custom_outofstock_variation_addition', 10, 3 );
function custom_outofstock_variation_addition( $data, $product, $variation ) {
if( $variation->is_on_backorder() ){
$data['availability_html'] .= '<table class="variations mto-cont" cellspacing="0">
<tbody>
<tr>
<td class="made-to-order"><a> ' . do_shortcode('[nm_lightbox title="Made to Order …" content_image_id="5110"]') . '</a></td>
</tr>
</tbody>
</table>';
}
return $data;
}
我在第 7 行遇到 "unexpected T_ECHO" 的语法错误,我检查了 PHP parse/syntax errors; and how to solve them 试图理解和解决该问题的线程.
但我似乎无法以我有限的 PHP 知识找到解决此问题的方法。
下面是我想要在我的 Woocommerce/Wordpress 网站上的代码片段。
我使用的是
add_filter( 'woocommerce_available_variation', 'custom_outofstock_variation_addition', 10, 3 );
function custom_outofstock_variation_addition( $data, $product, $variation ) {
if( $variation->is_on_backorder() ){
$data['availability_html'] .= '<table class="variations mto-cont" cellspacing="0">
<tbody>
<tr>
<td class="made-to-order"><a> 'echo do_shortcode('[nm_lightbox title="Made to Order " content_image_id="5110"]');'</a></td>
</tr>
</tbody>
</table>';
}
return $data;
}
所以我希望达到的是让 Wordpress 在 <td class="made-to-order"><a>
和 </a></td>
之间做一个简码。
应该如何重写此代码才能使其正常工作?
您需要在 HTML 的字符串中 concatenate do_shortcode()
函数,而不是像 那样在其中使用 echo
(因为你在最后返回那个字符串):
add_filter( 'woocommerce_available_variation', 'custom_outofstock_variation_addition', 10, 3 );
function custom_outofstock_variation_addition( $data, $product, $variation ) {
if( $variation->is_on_backorder() ){
$data['availability_html'] .= '<table class="variations mto-cont" cellspacing="0">
<tbody>
<tr>
<td class="made-to-order"><a> ' . do_shortcode('[nm_lightbox title="Made to Order …" content_image_id="5110"]') . '</a></td>
</tr>
</tbody>
</table>';
}
return $data;
}