任何想法为什么这个PHP If / Else功能不起作用?

时间:2017-04-07 19:26:08

标签: php wordpress

我已经写了两个函数在Wordpress网站上一起工作,并且遇到了第二个问题。 这是第一个扫描图像的帖子的功能。如果找到一个,则选择该站点的主图像。如果没有图像,则按照默认图像。 这是功能:

function main_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $first_img = $matches [1] [0];
    if(empty($first_img)){
        //Defines a default image
        $first_img = "http://www.example.com/image.jpg";
    }
    return $first_img;
}

上面的代码运行正常。对于第二部分,我试图指定如果使用默认图像,则应将Twitter卡设置为&#34;摘要。&#34;如果找到另一张图片,Twitter卡应设置为&#34; summary_large_image。&#34;

这里的功能是:

function twitter_card() {
    global $post, $posts;
    if ($first_img = "http://www.example.com/image.jpg") {
        echo "summary";
    } else {
        echo "summary_large_image";
    }
}

第二个功能无法正常工作,因为它始终返回&#34;摘要,&#34;列出的图像是否在帖子中使用。

如果您知道为什么第二个功能不起作用,我会喜欢一些见解。

谢谢!

2 个答案:

答案 0 :(得分:3)

您需要==而不是=

==是比较
=是作业

至于$first_image,只需将它变为函数外的变量,然后在函数中写:

试试这个:

function twitter_card() { 
    global $post, $posts; 
    if (main_image() == "http://www.example.com/image.jpg") { 
        echo "summary"; 
    } else { 
        echo "summary_large_image"; 
    } 
 }

答案 1 :(得分:0)

请注意,当您使用单个=符号时,右侧的值将被分配给左侧的变量,然后将进行测试。 您的代码结果将始终为真

权利如果是这样的话:

if ($first_img = "http://www.example.com/image.jpg") { 
        echo "summary"; 
    } else { 
        echo "summary_large_image"; 
    } 

您的代码中需要注意的另一件事是$ first_img不在范围内。