2009-08-10 12 views

Respuesta

30

El primer paso es mover CodeIgniter y los archivos de WordPress en su propio directorio.

Después de eso, ponga la siguiente línea en la parte superior del archivo index.php de CodeIgniter. Cambie la ruta al wp-blog-header.php según sea necesario para señalar al directorio raíz de WordPress.

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

A continuación, puede utilizar las siguientes funciones dentro de sus puntos de vista:

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

Otras funciones auxiliares también se pueden encontrar en la documentación de WordPress que puede ayudarle en la integración del diseño.

+0

funciona absolutamente perfecto gracias hombre –

14

Cuando incluí el archivo wp-blog-header.php en la página index.php de Codeigniter, tuve el problema de que site_url() se define tanto en el helper de URL codeigniter como en WordPress. He resuelto esto usando el siguiente código:

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

última línea tiene que ser añadido como archivo de WordPress fue la adición de un encabezado de respuesta HTTP 'HTTP/1.0 404 Página no encontrada' a la cabecera.

Ahora está bien usar las funciones de WordPress para llamar a CodeIgntier.

0

si usted está planeando sobre el uso de la función site_url código encendedor en su código, o si está haciendo una fusión de un sitio de IC existente y WP ... esto podría ser útil:

en la parte superior de CI 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); 
} 

eficazmente este le permite utilizar site_url en CI, por lo que si ya ha añadido un montón de enlaces y el contenido de su proyecto que podría ayudarle.

4

Aquí hay otra manera de usar plantillas de WordPress en su proyecto codeigniter. Esto funciona mejor para mí, así que quería compartirlo. Probado con WordPress 3.3.1 y Codeigniter 2.1.

Directorio Estructura:

/ - WordPress 
/ci/ - codeigniter 

/ci/index.php (Parte superior de archivo de índice IC)

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

acuerdo con la función site_url colisión reemplazando la versión CodeIgniter por defecto. Deberá cambiar cualquier lugar que haya usado site_url() en codeigniter para usar 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; 
} 

Ahora puede utilizar el WordPress get_header() y/o get_footer() funciones para dibujar la plantilla en el proyecto de CI.

2

Estoy usando Wordpress para administrar artículos en un sitio web personalizado de comercio electrónico de CI. CI es mi sitio principal. La estructura de directorios es la siguiente:

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

soy capaz de utilizar las funciones de Wordpress en mis controladores de CI sin mis URLs están en mal estado cuando se añade el código siguiente al principio de index.php de CI:

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

Funciona también cuando se utiliza la biblioteca CI i18n de Jérôme Jaglale (http://jeromejaglale.com/doc/php/codeigniter_i18n).

Cuestiones relacionadas