执行多个PHP代码段会导致错误吗?

时间:2017-10-11 作者:Jan

我想执行多个不同的PHP代码段,这些代码段都会检索1个页面ID(是的,我想扩展代码并显示页面ID以外的其他内容)。

但如果我同时执行2个或更多代码段,我会得到一个空白页。。。

我的问题是,我如何修复这个错误,为什么以及如何导致这个错误?

这是我从错误日志中得到的信息:

【2017年10月11日星期三08:14:06.322845】【proxy\\u fcgi:error】【pid 5616:tid 140278597940992】【客户端xx.xxx.xxx.xxx:xxxxx】AH01071:获取错误“PHP消息:PHP致命错误:无法重新声明getPages()(之前在/var/www/vhosts/classymagazin.de/httpdocs/wp-content/plugins/insert-PHP代码段/短代码处理程序中声明)。PHP(29):eval()\'d代码:5)在/var/www/vhosts/classymagazin中声明。de/httpdocs/wp-content/plugins/insert-php代码段/shortcode处理程序。php(29):eval()\'d第12行的代码\\n\'

这是最新页面的PHP代码:

<?php

    function getPages(){
        $args = array(
        \'sort_order\' => \'desc\',
        \'sort_column\' => \'post_date\',
        \'post_type\' => \'page\',
        \'number\' => \'26\',
        \'post_status\' => \'publish\');

        return get_pages($args);
    }

    function filterPages($allNews, $pages){
         foreach($pages as $page) {
                $pid = $page->ID;
                $object = get_the_category($pid);
                $termsForPost = array();

                foreach($object as $terms) {
                    if($terms->term_id == 15 || $terms->term_id == 16){
                        $termsForPost[] = $terms->term_id;
                    }
                }

                if(in_array(15, $termsForPost) && in_array(16, $termsForPost)){
                    $allNews[$pid] = array("ID" => $pid, "Sticky" => true, "Timestamp" =>  get_the_time(\'U\', $pid), "Title" => get_the_title($pid));
                }else if(in_array(15, $termsForPost)){
                    $allNews[$pid] = array("ID" => $pid, "Sticky" => false, "Timestamp" => get_the_time(\'U\', $pid), "Title" => get_the_title($pid));
                }
            }

        return $allNews;    
    }

    function sortPages($allNews){
            $stickyPosts = array();
            $nonStickyPosts = array();

            foreach($allNews as $article){
                if($article["Sticky"] == true){
                        $stickyPosts[] = $article["ID"];
                    }else{
                        $nonStickyPosts[] = $article["ID"];
                    }
            }

            $allNews = null;

            foreach($stickyPosts as $tmp){
                $allNews[] = $tmp;
            }

            foreach($nonStickyPosts as $tmp){
                 $allNews[] = $tmp;
            }

        return $allNews;
    }

    function getAllArticle($index = 0){
        if($index == 0){

            $allNews = array();
            $pages = getPages();

            $allNews = filterPages($allNews, $pages);
            $allNews = sortPages($allNews);

            foreach($allNews as $article){
                var_dump($article);
                echo "<br>";
            }

        }else{

            $allNews = array();
            $pages = getPages();

            $allNews = filterPages($allNews, $pages);
            $allNews = sortPages($allNews);

            var_dump($allNews[$index - 1]);
        }
    }



    getAllArticle(1);

?>
亲切的问候

2 个回复
SO网友:CK MacLeod

也许我误解了什么,我仍然不清楚您是如何使用这段代码的,但这似乎是一个简单的PHP错误。不能两次声明同名的独立函数。您可以使用function function_name() 只有一次,然后你可以叫它的名字。错误消息表明,您在指定文件的第5行声明了函数一次,在第12行声明了函数一次。

SO网友:Abhishek Ghosh

CK MacLeod是正确的。没什么大不了的。基本上由于这个错误,我们无法猜测整个逻辑结构!因此,您必须更正它并进行检查。

可能需要安装(&A);为类WordPress配置IDEMS visual studio, 配置用于Wordpress调试的MS visual studio。虽然这不会发现重大错误,但您可以轻松查看function function_name() 容易地下面是using endif on WordPress doc 在复杂代码段中。

结束

相关推荐

为什么WordPress多站点重定向到wp-signup.php,以及如何修复它?

我最近在Wordpress multisite上建立了第二个博客。Multisite上的主要博客是www.example.com, 我两天前建立的第二个博客是www.example2.org.不幸的是www.example2.org, WordPress重定向到https://www.example.com/wp-signup.php?new=在同一台服务器上,我设置了相应的测试多站点,其中test.example.com 作为主要博客和test.example2.org 第二个博客。它正在毫无问题地工作