45 votes

Comment intégrer le modèle de WordPress avec CodeIgniter

Comment peut-CodeIgniter et WordPress être intégrée, de sorte que le regard et la sensation/modèle de le blog WordPress est reporté à l'CodeIgniter-créé des pages?

32voto

Click Upvote Points 34295

La première étape consiste à déplacer CodeIgniter et les fichiers WordPress dans leur propre répertoire.

Après cela, ajoutez la ligne suivante au début de votre CodeIgniter l' index.php le fichier. Changer le chemin de wp-blog-header.php que nécessaire pour faire le point de votre WordPress à la racine.

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

Ensuite, vous pouvez utiliser les fonctions suivantes à l'intérieur de votre point de vue:

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

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

16voto

sumanchalki Points 1035

Quand j'ai inclus le fichier wp-blog-header.php dans Codeigniter est index.php page, j'ai un problème que site_url() est définie dans les deux codeigniter 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 comme WordPress fichier a été l'ajout d'un en-tête de réponse HTTP "HTTP/1.0 404 Page not found" à l'en-tête.

Maintenant, il est légitime de les utiliser WordPress fonctions d'appel dans CodeIgntier.

6voto

sschueller Points 13

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

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

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

/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 de votre projet CI.

3voto

ChrisAelbrecht Points 371

J'utilise Wordpress pour la gestion des articles de la coutume de CI, de site e-commerce. CI est mon site principal. La structure de répertoire est le suivant:

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

Je suis en mesure d'utiliser Wordpress fonctions dans mon CI contrôleurs sans mon Url en cours foiré avec le moment d'ajouter le code suivant en haut de CI de la 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 également lors de l'utilisation de l'IC i18n bibliothèque par Jérôme Jaglale (http://jeromejaglale.com/doc/php/codeigniter_i18n).

0voto

Eric Points 36

si vous prévoyez sur l'utilisation du code d'allumage site_url fonction dans votre code, ou si vous êtes en train de faire une fusion de CI de site et de WP... cela peut être utile:

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X