Параметр возвращает пустой значок в пользовательском значке Visual Composer

Я настроил пользовательский элемент в VC, чтобы пользователь мог добавить кнопку с настраиваемым текстом, ссылкой и (настраиваемым) значком шрифта.

Я могу повторить заголовок и ссылку, но значок шрифта пуст. Когда я печатаю_r($atts), я получаю это:

Array
(
    [reach_vc_button_text] => More Information
    [reach_vc_button_link] => url:http%3A%2F%2Flocalhost%2FWordPress%2FJammyCustard%2Freach%2Ffunding%2Fthriving-rural-communities-scheme-trc%2F|||
    [reach_vc_button_icon] => 
);

    <?php
function reach_vc_button_html( $atts ) {

    $atts = shortcode_atts(
        array(
            'reach_vc_button_text' => '',
            'reach_vc_button_link' => '',
            'reach_vc_button_icon' => '',
        ), $atts, 'reach_vc_button'
    );

    ob_start();
    ?>

        <?php
            $href = $atts['reach_vc_button_link'];
            $button_link = vc_build_link( $href );

            //echo '<pre>'; print_r($atts); echo '</pre>';

        ?>  

    <a href="<?php echo $button_link['url']; ?>" class="read-more excerpt-read-more project-read-more"><?php echo $atts['reach_vc_button_text']; ?><i class="<?php echo $atts['reach_vc_button_icon']; ?>"></i></a>

    <?php
    $html = ob_get_clean(); 
    return $html;

}

add_shortcode( 'reach_vc_button', 'reach_vc_button_html' );

редактировать: добавлен код параметра:

array(
                "type"        => "iconpicker",
                "heading"     => __( "Button Icon", "reach-rdp" ),
                "param_name"  => "reach_vc_button_icon",
                "value"       => "icon-more-information",
                "description" => __( "Select the icon to display for this button", "reach-rdp" ),
                "settings"   => array(
                    "emptyIcon"    => false,
                    "type"         => "reach",
                    "iconsPerPage" => "50",
                ),
                "dependency" => array(
                    "element" => "icon_type",
                    "value"   => "reach",
                ),
            ),

person Huw Rowlands    schedule 25.01.2017    source источник
comment
кажется, чтоreach_vc_button_icon содержит правильный HTML. Попробуйте var_dump() вместо print_r(). Затем вы также можете увидеть html в своем выводе. И если это html, у вас есть ответ. Тогда это никогда не сработает: ‹i class=‹?php echo $atts['reach_vc_button_icon']; ?>>   -  person Oliver    schedule 25.01.2017
comment
Var_dump = array(3) { ["reach_vc_button_text"]=> string(16) "More Information" ["reach_vc_button_link"]=> string(117) "url:http%3A%2F%2Flocalhost%2FWordPress%2FJammyCustard%2Freach%2Ffunding%2Fthriving-rural-communities-scheme-trc%2F|||" ["reach_vc_button_icon"]=> string(0) "" }   -  person Huw Rowlands    schedule 25.01.2017
comment
Хорошо, это просто пустая строка. Потом становится сложнее найти ошибку. Я бы попробовал проверить содержимое $atts. Насколько мне известно, shortcode_atts() объединяет массивы. И по какой-то причине не задана или пуста значкаreach_vc_button_icon. Сейчас я не в сети, но я вернусь завтра, если вам все еще нужна помощь.   -  person Oliver    schedule 25.01.2017
comment
Спасибо, @Oliver, у меня есть еще одна проблема, которая может быть связана на самом деле, и когда я нажимаю раскрывающийся список, чтобы выбрать значок, они повторяются. У меня есть около 10 пользовательских значков, а он показывает 20. По какой-то причине дважды зацикливается?! Я продолжу играть и дам вам знать, если мне удастся решить эту проблему!   -  person Huw Rowlands    schedule 25.01.2017
comment
Пожалуйста. Не вижу цикла в вашем коде. Итак, я думаю, вы говорите о другой части вашего кода. Надеюсь, вы нашли причину отсутствия значения в вашей переменной $atts.   -  person Oliver    schedule 26.01.2017
comment
Нет, все равно разберусь!   -  person Huw Rowlands    schedule 26.01.2017


Ответы (1)


Ваша проблема может быть в вашем коде объявления параметра. попробуйте следующий код

array(
      'type' => 'iconpicker',
      'heading' => __( 'Button Icon', 'reach-rdp' ),
      'param_name' => 'reach_vc_button_icon',
      'settings' => array(
        'emptyIcon' => false, // default true, display an "EMPTY" icon?
        'type' => 'openiconic',
        'iconsPerPage' => 200, // default 100, how many icons per/page to display
      ),
      'dependency' => array(
        'element' => 'icon_type',
        'value' => 'openiconic',
      ),
      'description' => __( 'Select icon from library.', 'reach-rdp' ),
    ),

Следующим шагом является постановка в очередь стиля Openiconic или использование заданной функции Visual Composer в выходном файле с коротким кодом. следуйте этому коду

vc_icon_element_fonts_enqueue( $i_type );

Для получения подробной информации перейдите по этой ссылке https://wpbakery.atlassian.net/wiki/display/VC/Adding+Icons+to+vc_icon

person Nahid Hasan    schedule 26.01.2017
comment
Сверил ваш код с моим, и, боюсь, он все еще не работает. - person Huw Rowlands; 26.01.2017
comment
Является ли этот стиль шрифта в очереди и проверьте, что «icon_type» возвращает что-либо. если icon_type не возвращает никаких мыслей, то это не сработает. я создаю пользовательский элемент, используя этот код, и он работает правильно. - person Nahid Hasan; 26.01.2017