WordPress短代码功能有一些代码错误


WordPress shortcode function has some error with code?

我对这段代码有问题。一些字符破坏了我的WordPress网站,我不确定是哪一个,我不懂php或编码这么多。

function check_member( $atts, $content = null )
    {
        if ( is_user_logged_in() ) :
            return $content;
        else :
            $return .= '<img class="background-img" src="website.com/image.jpg" alt="" width="850" height="478" style="position: absolute; top: 0; left: 0;" />';
            $return .= '<img class="logo-img" src="website.com/image.jpg" alt="" width="188" height="50" style="position: absolute; display: block; left: 0; right: 0; bottom: 50%; margin: auto;" />';
            $return .= '<h2 style="position: absolute; text-transform: uppercase; margin: 0; font-size: 1.5rem; color: white; display: block; left: 0; right: 0; bottom: 10%; margin: auto; padding: 50px;">NOT OKAY</h2>';
            $return .= '<p style="position: absolute; margin: 0; font-size: 1.2rem; color: white; display: block; left: 0; right: 0; bottom: 0%; margin: auto; padding: 50px;">SORRY, YOU ARE NOT MEMBER</p>';
        endif;
    }

如果这在页面上给您一个警告,很可能是因为您的第一行。由于您没有在任何地方声明$return,因此您不能使用.=,而是使用=:

$return = '<img class="background-img" src="website.com/image.jpg" alt="" width="850" height="478" style="position: absolute; top: 0; left: 0;" />';

其次,你不需要像那样连接,每行不需要被分割成它自己的语句:

$return = '<img class="background-img" src="website.com/image.jpg" alt="" width="850" height="478" style="position: absolute; top: 0; left: 0;" />
<img class="logo-img" src="website.com/image.jpg" alt="" width="188" height="50" style="position: absolute; display: block; left: 0; right: 0; bottom: 50%; margin: auto;" />
<h2 style="position: absolute; text-transform: uppercase; margin: 0; font-size: 1.5rem; color: white; display: block; left: 0; right: 0; bottom: 10%; margin: auto; padding: 50px;">NOT OKAY</h2>
<p style="position: absolute; margin: 0; font-size: 1.2rem; color: white; display: block; left: 0; right: 0; bottom: 0%; margin: auto; padding: 50px;">SORRY, YOU ARE NOT MEMBER</p>';

第三,您没有返回这个变量,因此当它到达脚本的后半部分时不会发生任何事情。你需要返回它:

$return = '<img class="background-img" src="website.com/image.jpg" alt="" width="850" height="478" style="position: absolute; top: 0; left: 0;" />
<img class="logo-img" src="website.com/image.jpg" alt="" width="188" height="50" style="position: absolute; display: block; left: 0; right: 0; bottom: 50%; margin: auto;" />
<h2 style="position: absolute; text-transform: uppercase; margin: 0; font-size: 1.5rem; color: white; display: block; left: 0; right: 0; bottom: 10%; margin: auto; padding: 50px;">NOT OKAY</h2>
<p style="position: absolute; margin: 0; font-size: 1.2rem; color: white; display: block; left: 0; right: 0; bottom: 0%; margin: auto; padding: 50px;">SORRY, YOU ARE NOT MEMBER</p>';
// This will send it back to use via echo
return $return;

第四,你的$atts没有被使用,没有意义。它可能也会弄乱你的代码。

NON-SHORTCODE

如果你没有做[shortcode],这可能是你正在寻找的:

function check_member($content = null )
    {
        if (is_user_logged_in())
            return $content;
        ob_start();
        ?>
        <img class="background-img" src="website.com/image.jpg" alt="" width="850" height="478" style="position: absolute; top: 0; left: 0;" />
        <img class="logo-img" src="website.com/image.jpg" alt="" width="188" height="50" style="position: absolute; display: block; left: 0; right: 0; bottom: 50%; margin: auto;" />
        <h2 style="position: absolute; text-transform: uppercase; margin: 0; font-size: 1.5rem; color: white; display: block; left: 0; right: 0; bottom: 10%; margin: auto; padding: 50px;">NOT OKAY</h2>
        <p style="position: absolute; margin: 0; font-size: 1.2rem; color: white; display: block; left: 0; right: 0; bottom: 0%; margin: auto; padding: 50px;">SORRY, YOU ARE NOT MEMBER</p>
        <?php
        $content    =   ob_get_contents();
        ob_end_clean();
        return $content;
    }
使用

>

$whatever = 'Some sort of text that will be written if logged in.';
echo check_member($whatever);

商家

如果你想做一个[shortcode],你可能会想这样做:

function check_member($attr)
    {
        $settings['content']    =   false;
        $a                      =   shortcode_atts($settings,$attr,'checkmember');
        if (is_user_logged_in())
            return $a['content'];
        ob_start();
        ?>
        <img class="background-img" src="website.com/image.jpg" alt="" width="850" height="478" style="position: absolute; top: 0; left: 0;" />
        <img class="logo-img" src="website.com/image.jpg" alt="" width="188" height="50" style="position: absolute; display: block; left: 0; right: 0; bottom: 50%; margin: auto;" />
        <h2 style="position: absolute; text-transform: uppercase; margin: 0; font-size: 1.5rem; color: white; display: block; left: 0; right: 0; bottom: 10%; margin: auto; padding: 50px;">NOT OKAY</h2>
        <p style="position: absolute; margin: 0; font-size: 1.2rem; color: white; display: block; left: 0; right: 0; bottom: 0%; margin: auto; padding: 50px;">SORRY, YOU ARE NOT MEMBER</p>
        <?php
        $content    =   ob_get_contents();
        ob_end_clean();
        return $content;
    }
add_shortcode('checkmember','check_member');