Comment intégrer WordPress template avec CodeIgniter

comment CodeIgniter et WordPress peuvent-ils être intégrés de telle sorte que le look et le feel/template de le blog WordPress est porté sur les pages créées par CodeIgniter?

43
demandé sur unknowndomain 2009-08-10 13:26:45

5 réponses

la première étape est de déplacer CodeIgniter et les fichiers WordPress dans leur propre répertoire.

Après cela, mettez la ligne suivante en haut de votre CodeIgniter index.php fichier. Modifier le chemin d'accès wp-blog-header.php comme nécessaire pour pointer vers le répertoire racine de votre WordPress.

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

ensuite, vous pouvez utiliser les fonctions suivantes à l'intérieur de vos vues:

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

D'autres fonctions d'aide peuvent également être trouvées dans la documentation de WordPress qui peut vous aider dans l'intégration de conception.

31
répondu Click Upvote 2013-11-28 00:56:21

quand j'ai inclus le fichier wp-blog-header.php dans l'index de Codeigniter.php page, j'ai eu un problème que site_url() est défini à la fois dans codeigniter's URL helper et WordPress. J'ai résolu ce problème en utilisant le code suivant:

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");

La dernière ligne doit être ajoutée car le fichier WordPress ajoutait un en-tête de réponse HTTP 'page HTTP/1.0 404 pas trouvé' à l'en-tête.

maintenant son amende D'utiliser des fonctions WordPress pour faire appel à CodeIgntier.

16
répondu sumanchalki 2013-11-28 00:56:55

Voici une autre façon d'utiliser les templates WordPress dans votre projet codeigniter. Cela fonctionne mieux pour moi, alors j'ai voulu le partager. Testé avec WordPress 3.3.1 et Codeigniter 2.1.

Structure Du Répertoire:

/ - WordPress
/ci/ - codeigniter

/ci / index.php (en Haut de l'IC fichier d'Index)

$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");

gérer la collision avec la fonction site_url en remplaçant la version codeigniter par défaut. Vous aurez besoin de changer toute la place que vous avez utilisé site_url() dans codeigniter à utiliser ci_site_url() plutôt.

/ 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;
}

vous pouvez maintenant utiliser le WordPress get_header() et/ou get_footer() fonctions pour dessiner le modèle dans votre projet D'IC.

5
répondu sschueller 2015-08-24 13:31:35

J'utilise Wordpress pour gérer des articles dans un site de E-commerce personnalisé CI. CI est mon principal site. La structure du répertoire est la suivante:

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

Je suis capable D'utiliser les fonctions Wordpress dans Mes controllers CI sans que mes URLs ne soient abîmées lors de l'ajout du code suivant au sommet des CI index.php:

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);
}

fonctionne aussi avec la bibliothèque CI i18n de Jérôme Jaglale (http://jeromejaglale.com/doc/php/codeigniter_i18n).

3
répondu Chris Aelbrecht 2015-03-11 21:08:45

si vous prévoyez d'utiliser la fonction code ignitor site_url dans votre code, ou si vous fusionnez un site CI existant avec WP... cela peut être utile:

en haut de l'IC de l'index.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);
}

cela vous permet effectivement d'utiliser site_url dans CI, donc si vous avez déjà ajouté une tonne de liens et de contenu à votre projet, il pourrait vous aider.

0
répondu Eric 2011-07-23 18:07:21