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

do_shortcode: Opening and Closing tag with variable inside between quotes

提问人:Marcio Vieyra 提问时间:5/9/2020 更新时间:5/9/2020 访问量:277

问:

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

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

我猜错误是“回声”线在哪里......我在这里快疯了!帮助!!!非常感谢: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 wordpress 报价 简码

评论


答:

0赞 Marcio Vieyra 5/9/2020 #1

所以。。。我一直在尝试,并像这样解决它:

<?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 ); 
?>

有没有更简单/更清晰的方法可以做到这一点?希望它能帮助任何试图实现同样目标的人。

1赞 user8717003 5/9/2020 #2

尝试:

<?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。