Поддержка Проблемы и решения Не выводится шорткод в шорткоде из виджета

  • через текстовый виджет выводиться всплывающее окно, внутри которого выводиться через шорткод форма. Не получается.
    Перепробовал и ‘ и » и <<< — либо разметка сбивается, либо ничего не происходит
    Код:

    <?php
    add_shortcode('userregpopup', 'popup_reg_func');
    function popup_reg_func ( $attr, $shortcode_content = null ) {
    return '
        <div class="popupregform-wrapper">
            <input type="checkbox" class="popupregform-checkbox" id="popupregformCheckboxOne">
            <div class="popupregform">
                <div class="popupregform-content">
                  <label for="popupregformCheckboxOne" class="popupregform-closer">×</label>
                      <p>'; echo do_shortcode( "[logining]" ); return '</p>
                </div>
            </div>
        </div>
      
    <label for="popupregformCheckboxOne" class="popupregform-shower">Войти на сайт</label>
      
    <style type="text/css">
    
        .popupregform-checkbox, .popupregform { display: none; }
        
        .popupregform {
            position: fixed;
            z-index: 10;
            width: 100%;
            height: 100%;
            opacity: 0;
        }
        
        .popupregform-content {
            width: 300px;
            height: 350px;
            position: absolute;
            z-index: 2;
        }
    
        .popupregform:before {
            display: block;
            content: " ";
            position: absolute;
        }
    </style>';
    }
    ?>

    шорткод [logining] —

    <?php
    add_shortcode('logining', 'logining_func');
    function logining_func ( $attr, $shortcode_content = null )
    {
    	$args = array(
    	'echo'           => false,
    	'redirect'       => site_url( $_SERVER['REQUEST_URI'] ), 
    	'form_id'        => 'loginform',
    	'label_username' => __( 'Имя пользователя' ),
    	'label_password' => __( 'Пароль' ),
    	'label_remember' => __( 'Запомнить меня' ),
    	'label_log_in'   => __( 'Войти' ),
    	'id_username'    => 'user_login',
    	'id_password'    => 'user_pass',
    	'id_remember'    => 'rememberme',
    	'id_submit'      => 'wp-submit',
    	'remember'       => true,
    	'value_username' => NULL,
    	'value_remember' => true );
    	
        $form = str_replace( 'wp-login.php', 'wp-login.php?pass=1', wp_login_form( $args ) );
        return $form;
    }
    ?>
    • Тема изменена 4 года, 8 месяцев назад пользователем jurvrn.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Yuri

    (@yube)

    Если «вклеиваете» функцию внутрь литерала, то делайте это так:

    
    <p>' . do_shortcode( "[logining]" ) . '</p>
    


    За сим ликбез по азам PHP на этом форуме прекращаю.
    Взялся за гуж — не говори что не дюж.
    Учиться, учиться и еще раз учиться — как завещал товарищ Ленин.

    Юрий, @yube, про знак конкатенации знаю, уже использовал, учусь по мере возникновения проблем. Прежде чем попросить помощи — сам попробую что умею
    Просто в другом случае такая конструкция работала без точек, вот например:
    правда там виджет. Про отличие от шорткода знаю, но это тонкости программирования которых я не знаю.

    <?php
    add_action ('widgets_init', 'my_widget_func_tabs');
    function my_widget_func_tabs () {
        register_widget('my_widget_tabs');
    }
    class my_widget_tabs extends WP_Widget
    {
        function __construct()
        {
                    *********
    echo '
    <div class="containertabsnew">
            <div class="tabsnew">
                <input id="tabnew1" type="radio" name="tabsn" checked>
                <label for="tabnew1" title="Новость">Новость</label>
    
                    <section id="content-tabnew1">
                        <p>Здесь можно добавлять новости из области права</p>
                        <p>'; echo do_shortcode('[my_button_job]'); echo '</p>
                        <p>Опубликуйте информацию, которая вам покажется интересной.</p>
                        </section>
    </style>
    ';
          echo $args['after_widget'];
    }
                        *********
            $instance['title'] = (!empty($new_instance['title'])) ? strip_tags($new_instance['title']) : '';
            return $instance;
        }
    }
    ?>

    про кавычки ещё не понял — у меня есть в коде
    . do_shortcode( "[logining]" )
    может их превратить в одинарные?

    • Ответ изменён 4 года, 8 месяцев назад пользователем jurvrn.
    • Ответ изменён 4 года, 8 месяцев назад пользователем jurvrn.
    • Ответ изменён 4 года, 8 месяцев назад пользователем jurvrn.
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Не выводится шорткод в шорткоде из виджета» закрыта для новых ответов.