Разрешить ввод поля Wordpress плагин для вывода HTML - PullRequest
0 голосов
/ 14 мая 2018

Я использую многоцелевую тему, которая имеет много встроенных модулей, таких как кнопки, CTA и т. Д. Проблема в том, что для экземпляра я хочу добавить тег в текстовое поле кнопки:

enter image description here

Что делает это на моем сайте: enter image description here

Мне всегда было интересно, есть ли способ изменить php модуляразрешить HTML и не избежать его?Я пытался использовать wp_kses и многие другие функции, которые я гуглил, но ничего не помогает.Вот код из button.php, который, на мой взгляд, актуален:

    function render( $attrs, $content = null, $render_slug ) {
    $button_url        = $this->props['button_url'];
    $button_rel        = $this->props['button_rel'];
    $button_text       = $this->props['button_text'];
    $background_layout = $this->props['background_layout'];
    $url_new_window    = $this->props['url_new_window'];
    $custom_icon       = $this->props['button_icon'];
    $button_custom     = $this->props['custom_button'];
    $button_alignment  = $this->get_button_alignment();

    // Nothing to output if neither Button Text nor Button URL defined
    $button_url = trim( $button_url );

    if ( '' === $button_text && '' === $button_url ) {
        return '';
    }

    // Module classnames
    $this->add_classname( "et_pb_bg_layout_{$background_layout}" );

    // Render Button
    $button = $this->render_button( array(
        'button_id'        => $this->module_id( false ),
        'button_classname' => explode( ' ', $this->module_classname( $render_slug ) ),
        'button_custom'    => $button_custom,
        'button_rel'       => $button_rel,
        'button_text'      => $button_text,
        'button_url'       => $button_url,
        'custom_icon'      => $custom_icon,
        'has_wrapper'      => false,
        'url_new_window'   => $url_new_window,
    ) );

    // Render module output
    $output = sprintf(
        '<div class="et_pb_button_module_wrapper et_pb_module%2$s">
            %1$s
        </div>',
        $button,
        sprintf( ' et_pb_button_alignment_%1$s', esc_attr( $button_alignment ) )
    );

    return $output;
}

Я думаю, что эти строки важны, как их изменить, чтобы они работали:

'button_text'      => $button_text,
$button_text       = $this->props['button_text'];

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Вот что преобразует ваши HTML-теги в текст:

// Render button
return sprintf( '%7$s<a%9$s class="%5$s" href="%1$s"%3$s%4$s%6$s>%2$s</a>%8$s',
    esc_url( $args['button_url'] ),
    esc_html( $args['button_text'] ),
    ( 'on' === $args['url_new_window'] ? ' target="_blank"' : '' ),
    et_esc_previously( $data_icon ),
    esc_attr( implode( ' ', array_unique( $button_classname ) ) ), // #5
    et_esc_previously( $this->get_rel_attributes( $args['button_rel'] ) ),
    $args['has_wrapper'] ? '<div class="et_pb_button_wrapper">' : '',
    $args['has_wrapper'] ? '</div>' : '',
    '' !== $args['button_id'] ? sprintf( ' id="%1$s"', esc_attr( $args['button_id'] ) ) : ''
);

esc_html( $args['button_text'] ) является виновником.Измените его на $args['button_text'] и все готово.

0 голосов
/ 14 мая 2018

Что такое элемент HTML? если это либо button, либо input (type=submit), вы не можете добавить к этому HTML, вам нужно создать пользовательскую кнопку с тегом a.

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