Fatal error: Cannot redeclare site_url()

2019-07-23 19:49发布

I am working in codeigniter and I want to fetch blog post on the my web

Site Homepage When I include two file

require_once('blog/wp-blog-header.php');
require_once('blog/wp-includes/link-template.php');

I got an error.

Fatal error: Cannot redeclare site_url() (previously declared in /home/homebidpro/public_html/dev/system/helpers/url_helper.php:83) in /home/homebidpro/public_html/dev/blog/wp-includes/link-template.php on line 3004

I Commented this function according to location file:

function site_url( $path = '', $scheme = null ) {
    return get_site_url( null, $path, $scheme );
}

this error is removed and all functionality of website wotks But When I open blog is not opening it is giving error

dev.homebidpro.com page isn’t working

Blog and project location is same both are in dev Folder.

I stuck till now. Please give the solution as soon as possiable.

The rest of code is

 public function blogData()
    {

        require_once('blog/wp-blog-header.php');
        require_once('blog/wp-includes/link-template.php');

        if($catagory !='')
        {

            $args = array(  'posts_per_page' => 3, 'category_name' => $catagory );
        }
        else
        {

            $args = array('posts_per_page' => 4);
        }    

        $mypostsMov = get_posts( $args );  
       // echo "<pre>"; print_r($mypostsMov); die;
        $mypostsarrayMov = array();
        $i=0;
        foreach ($mypostsMov as $post ) : 
        $excerpt = preg_replace("/<img[^>]+\>/i", "", $post->post_content);      
        $mypostsarrayMov[$i]['post_title'] = strip_tags($post->post_title);
        $mypostsarrayMov[$i]['content'] =    strip_tags($post->post_content);
        $mypostsarrayMov[$i]['permalink'] = get_permalink($post->ID);
        $mypostsarrayMov[$i]['thumbnail'] =get_the_post_thumbnail($post->ID,array( 300, 200));
        $i++;
        endforeach; 
        wp_reset_postdata();

         //echo "<pre>"; print_r($mypostsarrayMov); die;

         //return $this->render('MovePlusServiceBundle:Default:recentpostCombined.html.twig',array('mypostsMov'=>$mypostsarrayMov, ));

         return $mypostsarrayMov;

}

And site_url function which is in codeigniter

if ( ! function_exists('site_url'))

{

    function site_url($uri = '')
    {
        $CI =& get_instance();
        return $CI->config->site_url($uri);
    }

}

and siteurl function which is blog folder I already send you.

1条回答
SAY GOODBYE
2楼-- · 2019-07-23 20:18

The issue you have is that CodeIgniter has a site_url() function in the url helper, and Wordpress also has a function site_url() which is defined within the wp-includes/link-template.php file.

Because you've included link-template.php in your CodeIniter page, PHP is telling you you're trying to create a function which already exists, which you can't do.

From what I can think of, you need to either:

  • Not load the CodeIgniter URL helper on the page you're including Wordpress in, OR
  • Not load the wp-includes/link-template.php file when you've loaded the CodeIgniter url helper, OR
  • Copy the functionality needed from wp-includes/link-template.php file into a custom library/helper or into your controller so you can generate the results which require the file to be included.

You might choose to implement a combination of these

查看更多
登录 后发表回答