do_shortcode: открывающий и закрывающий теги с переменной внутри между кавычками - PullRequest
0 голосов
/ 09 мая 2020

вы можете помочь мне исправить этот код? Он должен получить идентификатор продукта (что он делает), затем получить настраиваемое поле с именем «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]"); 
?>

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Попробуйте:

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

0 голосов
/ 09 мая 2020

Итак ... Я продолжал пытаться и решил это следующим образом:

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

Есть ли более простой / ясный способ сделать это? Надеюсь, это поможет любому, кто пытается достичь того же.

...