WordPress 템플릿을 CodeIgniter와 통합하는 방법
WordPress 블로그의 모양과 느낌/템플릿이 CodeIgniter가 작성한 페이지로 넘어가도록 CodeIgniter와 WordPress를 통합하는 방법은 무엇입니까?
첫 번째 단계는 CodeIgniter와 WordPress 파일을 각각의 디렉토리로 이동하는 것입니다.
그 후 CodeIgniter의 맨 위에 다음 행을 입력합니다.index.php
파일 경로 변경wp-blog-header.php
필요에 따라 WordPress의 루트 디렉토리를 가리킵니다.
<?php
require('../wp-blog-header.php');
그런 다음 뷰 내에서 다음 기능을 사용할 수 있습니다.
<?php
get_header();
get_sidebar();
get_footer();
?>
WordPress의 설명서에서 설계를 통합하는 데 도움이 되는 다른 도우미 기능도 찾을 수 있습니다.
내가 wp-blog-header 파일을 포함했을 때.codeigniter의 index.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 Page not found'를 헤더에 추가하고 있었으므로 마지막 줄을 추가해야 합니다.
이제 WordPress 함수를 사용하여 CodeIgntier를 호출하는 것이 좋습니다.
다음은 코드 시그니터 프로젝트에서 WordPress 템플릿을 사용하는 다른 방법입니다.저는 이게 더 잘 먹혀서 공유하려고 했어요.WordPress 3.3.1 및 Codeigniter 2.1로 테스트 완료.
디렉토리 구조:
/ - WordPress
/ci/ - codeigniter
/ci/index.php(CI 인덱스 파일 맨 위)
$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");
기본 코드 시그니터 버전을 덮어쓰고 site_url 함수 충돌에 대처합니다.사용하던 장소를 변경해야 합니다.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 프로젝트에서 템플릿을 그릴 수 있습니다.
커스텀 CI 전자상거래 웹사이트에서 Wordpress를 사용하여 기사를 관리하고 있습니다.CI가 제 메인 사이트입니다.디렉토리 구조는 다음과 같습니다.
/application (CI)
/... (directories like javascript, stylesheets ...)
/system (CI)
/wordpress
/.htaccess
/index.php (CI)
CI의 인덱스 상단에 다음 코드를 추가할 때 URL이 흐트러지지 않고 CI 컨트롤러에서 Wordpress 기능을 사용할 수 있습니다.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);
}
Jérome Jaglale(http://jeromejaglale.com/doc/php/codeigniter_i18n))의 CI i18n 라이브러리를 사용하는 경우에도 사용할 수 있습니다.
코드 점화 스위치 site_url 함수를 코드에 사용할 계획이나 기존 CI 사이트와 WP를 병합할 계획이라면...이것은 도움이 될 수 있습니다.
참조할 수 있습니다.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을 사용할 수 있으므로 프로젝트에 이미 많은 링크와 콘텐츠를 추가한 경우 도움이 될 수 있습니다.
WordPress 6.1 버전 및 코드 시그니터 - 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(); ?>
언급URL : https://stackoverflow.com/questions/1253906/how-to-integrate-wordpress-template-with-codeigniter
'programing' 카테고리의 다른 글
ng-src vs src 사용 (0) | 2023.03.01 |
---|---|
응답 헤더를 angularjs로 읽는 방법 (0) | 2023.03.01 |
ng-model: 빈 문자열은 늘이어야 합니다. (0) | 2023.03.01 |
어레이 변경 시 $watch가 트리거되지 않음 (0) | 2023.03.01 |
외부 키 및 외부 키가 Oracle DB에서 참조하는 테이블 목록 (0) | 2023.03.01 |