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?
Réponses
Trop de publicités?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.
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.
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.
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).
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.