如何将WordPress模板与CodeIgniter集成

yfjy0ee7  于 2023-02-06  发布在  WordPress
关注(0)|答案(6)|浏览(135)

如何将CodeIgniter和WordPress集成起来,以便WordPress博客的外观和感觉/模板被带到CodeIgniter创建的页面上?

wz3gfoph

wz3gfoph1#

第一步是将CodeIgniter和WordPress文件移动到它们自己的目录中。
然后,把下面这行代码放在CodeIgniter的index.php文件的顶部,根据需要将路径改为wp-blog-header.php,指向WordPress的根目录。

<?php
    require('../wp-blog-header.php');

然后,您可以在视图中使用以下函数:

<?php
    get_header();
    get_sidebar();
    get_footer();    
?>

在WordPress的文档中也可以找到其他帮助函数,它们可以帮助您集成设计。

6ss1mwsb

6ss1mwsb2#

当我在Codeigniter的index.php页面中包含wp-blog-header.php文件时,我遇到了一个问题,即site_url()在codeigniter的URL助手和WordPress中都有定义。

require('blog/wp-blog-header.php');

add_filter('site_url', 'ci_site_url', 1);

function ci_site_url() {
    include(BASEPATH.'application/config/config.php');
    return $config['base_url'];
}

header("HTTP/1.0 200 OK");

最后一行需要添加WordPress文件添加一个HTTP响应标头'HTTP/1.0 404页面未找到'到标头。
现在可以使用WordPress函数调用CodeIgntier了。

8hhllhi2

8hhllhi23#

这是在你的codeigniter项目中使用WordPress模板的另一种方法。这对我来说更好用,所以我想分享它。用WordPress 3.3.1和Codeigniter 2.1测试。
目录结构:

/ - WordPress
/ci/ - codeigniter

/ci/index.php(配置项索引文件的顶部)

$wp_did_header = true;

if ( defined('E_RECOVERABLE_ERROR') )
    error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR |   E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
else
    error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);

require_once("../wp-config.php");

通过覆盖默认的codeigniter版本来处理site_url函数冲突,你需要将codeigniter中使用site_url()的地方改为使用ci_site_url()
/ci/application/helpers/MY_url_helper.php

<?php
function anchor($uri = '', $title = '', $attributes = '')
{
    $title = (string) $title;

    if ( ! is_array($uri))
    {
        $site_url = ( ! preg_match('!^\w+://! i', $uri)) ? ci_site_url($uri) : $uri;
    }
    else
    {
        $site_url = ci_site_url($uri);
    }

    if ($title == '')
    {
        $title = $site_url;
    }

    if ($attributes != '')
    {
        $attributes = _parse_attributes($attributes);
    }

    return '<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>';
}

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

function current_url()
{
    $CI =& get_instance();
    return $CI->config->ci_site_url($CI->uri->uri_string());
}

function anchor_popup($uri = '', $title = '', $attributes = FALSE)
{
    $title = (string) $title;

    $site_url = ( ! preg_match('!^\w+://! i', $uri)) ? ci_site_url($uri) : $uri;

    if ($title == '')
    {
        $title = $site_url;
    }

    if ($attributes === FALSE)
    {
        return "<a href='javascript:void(0);' onclick=\"window.open('".$site_url."', '_blank');\">".$title."</a>";
    }

    if ( ! is_array($attributes))
    {
        $attributes = array();
    }

    foreach (array('width' => '800', 'height' => '600', 'scrollbars' => 'yes', 'status' => 'yes', 'resizable' => 'yes', 'screenx' => '0', 'screeny' => '0', ) as $key => $val)
    {
        $atts[$key] = ( ! isset($attributes[$key])) ? $val : $attributes[$key];
        unset($attributes[$key]);
    }

    if ($attributes != '')
    {
        $attributes = _parse_attributes($attributes);
    }

    return "<a href='javascript:void(0);' onclick=\"window.open('".$site_url."', '_blank', '"._parse_attributes($atts, TRUE)."');\"$attributes>".$title."</a>";
}


function redirect($uri = '', $method = 'location', $http_response_code = 302)
{
    if ( ! preg_match('#^https?://#i', $uri))
    {
        $uri = ci_site_url($uri);
    }

    switch($method)
    {
        case 'refresh'  : header("Refresh:0;url=".$uri);
            break;
        default         : header("Location: ".$uri, TRUE, $http_response_code);
            break;
    }
    exit;
}

现在,您可以使用WordPress get_header()和/或get_footer()函数在CI项目中绘制模板。

8tntrjer

8tntrjer4#

我正在使用WordPress管理一个自定义CI电子商务网站中的文章。CI是我的主站点。目录结构如下:

/application (CI)
 /... (directories like javascript, stylesheets ...)
 /system (CI)
 /wordpress
 /.htaccess
 /index.php (CI)

我可以在CI控制器中使用Wordpress函数,而不会在CI的index.php顶部添加以下代码时弄乱URL:

require_once './wordpress/wp-blog-header.php';

add_filter('site_url', 'ci_site_url', 1);

function ci_site_url($uri = '') {
    $CI =& get_instance();
    $uri = ltrim(str_replace($CI->config->base_url('wordpress/'), '', $uri),'/'); // "wordpress/" is in my case the name of the directory where I installed Wordpress. See directory structure above.
    return $CI->config->site_url($uri);
}

在使用Jérôme Jaglale的CI i18n库(http://jeromejaglale.com/doc/php/codeigniter_i18n)时也可以使用。

8yoxcaq7

8yoxcaq75#

如果您计划在代码中使用代码点火器site_url函数,或者如果您正在合并现有CI站点和WP...这可能会有所帮助:
在CI索引的顶部。php:

require_once '../wp-blog-header.php';

add_filter('site_url', 'ci_site_url', 4);

function ci_site_url($url, $path, $orig_scheme, $blog_id) {
    $CI =& get_instance();
    $new_path = str_replace("YOURSITEURLGOESHERE", "", $url);
    return  $CI->config->site_url($new_path);
}

这实际上允许您在CI中使用site_url,因此如果您已经向项目添加了大量链接和内容,那么它可能会对您有所帮助。

chhkpiq4

chhkpiq46#

在WordPress 6.1版本和Codeigniter - 4

/* Folder structure like
   Public_html/ WordPress
   Public_html/Codeigniter /*


 //Call WordPress wp_load file inside CodeIgniter in this way 
   // Add this code into Public_html/Codeigniter/Public/index.php

 $mypath = $_SERVER['DOCUMENT_ROOT'].'/wp-load.php';
 include_once($mypath);


 // Call header and Footer in to view page 
  // Add this code into Public_html/Codeigniter/App/Views/welcome_message.php
   
<?php get_header(); ?>
 
<body>
    <h3>
It works!</h3>
 
</body>
</html>
 
<?php get_footer(); ?>

相关问题