do_shortcode:开始和结束标记,引号之间有变量

do_shortcode: Opening and Closing tag with variable inside between quotes

你能帮我修复这段代码吗? 它应该获取产品 ID(它确实如此),然后获取名为 "ID_del_curso" 的自定义字段(它确实如此),最后打印出一个简码 [student course_id="$courseid"] HTML[/学生]

该按钮显示给访问该网站的任何人,而不仅仅是那些有资格成为产品中嵌入的课程编号学生的人。

我猜错误是在 "echo" 行所在的位置...我快要疯了!帮助!!!非常感谢 :D

<?php
    global $product;
    $postid = $product->get_id();
    $courseid = get_post_meta( $product->get_id(), 'ID_del_curso', true );
    $html = '<center><div class="alreadyPurchased"><i class="fas fa-graduation-cap paddingRightM"></i> Ya te has registrado</div></center>';
    echo do_shortcode("[student course_id=&quot;" .$courseid. "&quot;]". $html . "[/student]"); 
?>

所以...我继续尝试并解决了这个问题:

<?php
    global $product;
    $postid = $product->get_id();
    $courseid = get_post_meta( $product->get_id(), 'ID_del_curso', true );
    $html = '"]<center><div class="alreadyPurchased"><i class="fas fa-graduation-cap paddingRightM"></i> Ya te has registrado</div></center>';
    $openIT = '[student course_id="';
    $closeIT = '[/student]';
    echo do_shortcode( $openIT . $courseid . $html . $closeIT ); 
?>

是否有 simpler/clearner 方法可以做到这一点?希望它能帮助任何试图实现同样目标的人。

尝试:

<?php
    global $product;
    $courseid = get_post_meta( $product->get_id(), 'ID_del_curso', true );

    $student = <<<EOD
[student course_id="$courseid"]
    <center>
        <div class="alreadyPurchased">
            <i class="fas fa-graduation-cap paddingRightM"></i> Ya te has registrado
        </div>
    </center>
[/student]
EOD

    echo do_shortcode( $student );
?>

这在功能上等同于您的代码,但我认为更容易阅读,因为它的格式类似于 HTML。