Почему не передается параметр шорткода?

Создал шорткод для вставки FAQ на странице
<?php
function faq_func( $atts = null){
    $atts = shortcode_atts(
        array(
		'lang' => '',
        'id' => '',
	),$atts);

    $lang = $atts['lang'];
    $id = $atts['id'];
if($lang == RU){
    $contents = kama_parse_csv_file(get_template_directory() ."/faq/FAQ_RU.csv"); 
   
}else{
    $contents = kama_parse_csv_file(get_template_directory() ."/faq/FAQ_EN.csv"); 
     $contents2 = EN;
}

$ids = explode(",", $id);
	$allowed = $ids; //разрешенные ключи
 function cube($n)
    {
        return($n - 1);
    }
    $b = array_map("cube", $allowed);
$filtered = array_filter(
    $contents,
    function ($key) use ($b) {
        return in_array($key, $b);
    },
    ARRAY_FILTER_USE_KEY
);
$out = 
'<div class="container">
                <div class="accordian">
                    <div class="title">FAQ</div>';
                    echo $lang.'<br>';
                     echo $contents2.'<br>';
                       foreach($filtered as $title){  
$out .=                        '<div class="accordian-item">
                                <div class="accordian-item-header">
                                  <div class="acc-title">'. $title[1] .'</div>
                                </div>
                                <div class="accordian-item-body">
                                  <div class="accordian-item-body-content">
                                   '. $title[2] .'
                                  </div>
                                </div>';
                        }
$out .=                 '  </div>
                    </div>
                    </div> ';
return $out;
}
?>
<?php add_shortcode('faq', 'faq_func');
?>


Вызываю
echo do_shortcode( '[faq lang = "EN", id = "1,2,5"]' );
параметр id передаеться нормально, а вот язык нет. В чем проблема?
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 2
OtshelnikFm
@OtshelnikFm Куратор тега WordPress
Мои работы: otshelnik-fm.ru
echo и return? серьезно?
Вы перенесите ваш "код" в нормальную ide - получите сразу подсказки о эхе и возврате, а присвоениях, функции внутри функции, закрытии php и тут же открытии... Да этот код на "премию" отправить надо

Проблема в коде. Так нельзя. Почитайте основы php для начала
Ответ написан
@Pennio
Я сталкивался с подобного рода проблемой при таком выводе шорткода.
echo do_shortcode( '[faq lang = "EN", id = "1,2,5"]' );

"]' - конкретно проблема из-за этого. Рядом стоят две кавычки. Не знаю как это работает, но смотрите в этом направлении. Мне помогло замена двойной кавычки на одинарную. В PHP тоже не силен)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы