Wordpress短代码不适用于WP Codex命令和PHP

Wordpress短代码不适用于WP Codex命令和PHP,php,html,wordpress,shortcode,Php,Html,Wordpress,Shortcode,下面是我遇到的一个php问题,它以其他方式工作,但也不能以我希望的方式工作 基本上,我希望将WP login和logout命令添加到A-HREF链接中,但结尾的短代码似乎没有生效,我想知道原因,希望能够解决这个问题 <?php echo do_shortcode('[not-level-visitors]') . '<div id="SignUp"> <ul> <li><

下面是我遇到的一个php问题,它以其他方式工作,但也不能以我希望的方式工作

基本上,我希望将WP login和logout命令添加到A-HREF链接中,但结尾的短代码似乎没有生效,我想知道原因,希望能够解决这个问题

<?php
    echo do_shortcode('[not-level-visitors]') .
        '<div id="SignUp">
            <ul>
                <li><img src="http://dev.universitycompare.com/wp-content/themes/blue-and-grey/images/icons/user_icon.png" alt="User Icon My Account University Compare" />
                    <a href="http://dev.universitycompare.com/account/" style="margin: 0px 0px 0px -8px;">My Account</a>
                </li>
                <li>
                    <a href="' .  wp_logout_url($redirect) . '">Log Out</a>
                </li>
            </ul>
        </div>' . 
    do_shortcode('[/not-level-visitors]');
?>

基本上,上面的代码是可以工作的,但我只需要结束短代码就可以工作,因为它出现在我的html中,并且没有被识别-我已经从下面的代码片段创建了上面的代码,我已经在使用它,它完全可以工作:

<?php
    echo do_shortcode('[level-visitors]
        <div id="SignUp">
            <ul>
               <li>
                   <a href="#">Sign Up</a>
               </li>
               <li>
                   <a href="#">Login</a>
               </li>
            </ul>
        </div>
    [/level-visitors]');
?>

看起来您需要删除额外的开始/结束括号和额外的do_短代码调用

<?php
echo do_shortcode('[not-level-visitors]' .
    '<div id="SignUp">
        <ul>
            <li><img src="http://dev.universitycompare.com/wp-content/themes/blue-and-grey/images/icons/user_icon.png" alt="User Icon My Account University Compare" />
                <a href="http://dev.universitycompare.com/account/" style="margin: 0px 0px 0px -8px;">My Account</a>
            </li>
            <li>
                <a href="' .  wp_logout_url($redirect) . '">Log Out</a>
            </li>
        </ul>
    </div>' . 
'[/not-level-visitors]');
?>

我发现的主要区别是单个调用与多个调用的do\u短代码,我认为它与正则表达式不匹配

也许这会奏效:

    echo do_shortcode('[not-level-visitors]
        <div id="SignUp">
            <ul>
                <li><img src="http://dev.universitycompare.com/wp-content/themes/blue-and-grey/images/icons/user_icon.png" alt="User Icon My Account University Compare" />
                    <a href="http://dev.universitycompare.com/account/" style="margin: 0px 0px 0px -8px;">My Account</a>
                </li>
                <li>
                    <a href="' .  wp_logout_url($redirect) . '">Log Out</a>
                </li>
            </ul>
        </div>[/not-level-visitors]');
echo do_短代码('[非级别访客]
[/不分级访客]”;
太棒了!它必须被包含在相同的括号中,否则短代码会中断。