Как я могу добавить класс CSS в мой пример кода PHP - PullRequest
0 голосов
/ 14 мая 2019

Я бы хотел добавить класс в вывод этого фрагмента кода php

function acf_esg_tax_field_loc( $atts, $content = null ) {
    $a = shortcode_atts(array('post_id' => "1"), $atts);
    $term = get_field( "field_56cb3d84cf32a", $a['post_id'] );

    echo $term->name;
}

add_shortcode( 'acfesgtax_loc', 'acf_esg_tax_field_loc' );

Код используется в моих функциях Wordpress php для генерации шорткода.

Это должно бытькак то так

function acf_esg_tax_field_loc( $atts, $content = null ) {
    $a = shortcode_atts(array('post_id' => "1"), $atts);
    $term = get_field( "field_56cb3d84cf32a", $a['post_id'] );

    echo '<div class="OutputClass" >';
    echo $term->name;
    echo '</div>'; 
}

add_shortcode( 'acfesgtax_loc', 'acf_esg_tax_field_loc' );

К сожалению, это не работает.

Можете ли вы помочь?

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Как указано в справочнике кодов WordPress .

Обратите внимание, что функция, вызываемая с помощью шорткода, никогда не должна давать никакого вывода.Функции шорткода должны возвращать текст, который должен использоваться для замены шорткода.Непосредственное получение результатов приведет к неожиданным результатам.Это похоже на то, как должны вести себя функции фильтра, в том смысле, что они не должны вызывать ожидаемых побочных эффектов от вызова, поскольку вы не можете контролировать, когда и откуда они вызываются.

Поэтому сначала измените его сэхо к одному возвращению.Вы можете определить переменную, объединить ее и, наконец, вернуть.

Результат:

function acf_esg_tax_field_loc( $atts, $content = null ) {
    $a = shortcode_atts(array('post_id' => "1"), $atts);
    $term = get_field( "field_56cb3d84cf32a", $a['post_id'] );

    $sR =  '<div class="OutputClass" >';
    $sR .= $term->name;
    $sR .= '</div>'; 
    return $sR;
}

add_shortcode( 'acfesgtax_loc', 'acf_esg_tax_field_loc' );
0 голосов
/ 14 мая 2019

Если класс всегда один и тот же и может быть жестко закодирован, то вы очень близки. Будет выводиться только одно эхо, поэтому объедините его:

echo '<div class="OutputClass" >'.$term->name.'</div>';

Если оно динамическое и вам нужно где-то получить имя класса и передать его, тогда это совсем другая история.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...