我希望决赛
return do_shortcode($return);
是因为它试图处理一个名为要返回的整个内容的短代码并返回一个值。我想这不是你想要的。
尝试将其更改为:
return $return;
如果这不能解决问题,那么我建议从稍微调整代码开始,以回应每个短代码的信息:
function fm_requestebook ($atts) {
$atts = shortcode_atts(array(
\'cf7\' => null,
\'filename\' => null,
\'event\' => null,
\'testo\' => "Scarica eBook"
), $atts);
echo "<p>Attributes Received:</p><pre>" . print_r($atts, true) . "</pre>";
$contact_form = do_shortcode("[contact-form-7 id=".$atts[\'cf7\']."]");
$hf = \'<input type="hidden" name="_FM_ebook" value="\' . $atts["filename"]. \'" /></form>\';
$contact_form = str_replace("</form>", $hf, $contact_form);
$return=\'<a onclick="ga(\\\'send\\\',\\\'event\\\', \\\'Download\\\', \\\'ebook\\\', \\\'\'.$atts["event"].\'\\\');" class="fancybox" href="#ebook" target="_blank" rel="nofollow"><span class="red-button">\'.$atts["testo"].\'</span></a><div class="fancybox-hidden" style="display: none;"><div id="ebook" class="hentry">\'.$contact_form.\'</div></div>\';
echo "<p>About to return:</p><pre>" . htmlspecialchars( $return ) . "</pre>";
$return = do_shortcode($return);
echo "<p>After doing shortcode on return</p><pre>" . htmlspecialchars( $return ) . "</pre>";
return $return;
}
这应该让您看到,对于每个短代码:
应用do\\u shortcode()之前的返回值是什么?应用最终do\\u shortcode()时的返回值是什么?当然,我建议删除最终do\\u shortcode,除非您确实有一个被命名为返回值整个内容的短代码。