尝试在codeigniter站点中包含wp-load.php时出现500内部服务器错误

时间:2015-06-04 06:07:25

标签: wordpress codeigniter

我在www.example.com/blog设置了一个Wordpress博客,在www.example.com设置了一个Codeigniter网站。我正在尝试将最近的帖子从博客显示到我的Codeigniter网站。为此,我使用

包含了wp-load.php文件
require($_SERVER['DOCUMENT_ROOT'] . '/blog/wp-load.php');

   // require_once('../app/blog/wp-load.php');
                         $args = array(
                              // 'cat' => 3, // Only source posts from a specific category
                              'posts_per_page' => 4 // Specify how many posts you'd like to display
                              );
                              $latest_posts = new WP_Query( $args );  
                              if ( $latest_posts->have_posts() ) {
                                while ( $latest_posts->have_posts() ) {
                                $latest_posts->the_post(); ?>
                             <marquee align="top" behavior="scroll" onmouseover="this.stop();" onmouseout="this.start();" direction="up" scrolldelay="200" ><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> 
                            <li>

                              <?php if ( has_post_thumbnail() ) { ?>
                                <span class="post_thumbnail"><?php the_post_thumbnail(); ?></span>
                              <?php } ?>
                              <span class="post_title"><?php the_title(); ?></span>
                            </a>
                            <!--span class="post_time">Posted on <?php the_time('l jS F, Y') ?></span-->
                            <?php //the_excerpt(); ?>
                          </li> 
                          </marquee >
                        <? } 
                            } else {
                            echo '<p>There are no posts available</p>';
                          }
                          wp_reset_postdata(); 
                        ?>

但抛出内部服务器错误。 我是否必须更改文件权限?请帮忙。该网站由Godaddy主持。

错误明细:

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

     

请联系服务器管理员以告知时间   发生错误以及您可能已经做过的任何事情   导致错误。

     

有关此错误的详细信息可能在服务器错误中可用   日志中。

1 个答案:

答案 0 :(得分:0)

不要在主网站中包含任何Wordpress文件,因为它可能会导致许多错误。而是使用Codeigniter的第二个数据库连接来连接到您的Wordpress数据库。 正在搜索get wordpress posts from database to codeigniter我找到了此gistthis article。以下代码取自本文。请注意,此代码适用于Codeigniter 2,并且未对代码进行测试。但我以前在Codeigniter处理了很多数据库,只要问你是否发现任何问题。

<强>一个。在application/config/database.php文件中添加不同的设置数据以及主网站数据库设置:

$db['wordpress']['hostname'] = "wordpress_db_host"; // database host
$db['wordpress']['username'] = "wordpress_db_username"; // db user name
$db['wordpress']['password'] = "wordpress_db_password"; // db user password
$db['wordpress']['database'] = "wordpress_db"; // database name

<强>湾在application/models/wordpress_model.php中构建Wordpress模型:

<?php if (!defined('BASEPATH')) die ('No direct script access allowed!');

class Wordpress_Model extends CI_Model
{
    function getPosts()
    {
        $this->load->database('wordpress', TRUE); // load database

        // get the wordpress posts, customize it as you like
        $this->wordpress->select("post_id, post_title, post_content");
        $this->wordpress->from('post_tbl');
        $this->wordpress->limit(5);
        $query = $this->wordpress->get();
        $data['posts'] = $query->result();

        $this->load->view('wordpress_posts_view', $data); // load the view file , we are passing $data array to view file
    }
}

<强>℃。在application/views/wordpress_posts_view.php中创建视图文件:

<h4>Display Records From Database Using Codeigniter</h4>
<table>
    <tr>
        <td><strong>Post Id</strong></td>
        <td><strong>Post Title</strong></td>
    </tr>
    <?php foreach($posts as $post){?>
        <tr>
            <td><?php echo $post->post_id;?></td>
            <td><?php echo $post->post_title;?></td>
        </tr>    
    <?php }?>  
</table>

<强> d。现在,您可以在任何Codeigniter控制器中调用所有这些:

<?php if (!defined('BASEPATH')) die ('No direct script access allowed!');

class Homepage extends CI_Controller
{
    public function index()
    {
        $this->load->model('wordpress_model');

        $data['wordpress_html_posts'] = $this->wordpress_model->getPosts();
        print_r($data['wordpress_html_posts']);
    }
}