스탠드아론 스크립트에서 WPDB를 사용하시겠습니까?
WPDB를 사용하여 WordPress에 접속하려고 하는 이유는 WP-config에 지정된 설정이 있기 때문입니다.php 다시 지정할 필요가 없습니다.
이 WPDB 인스턴스를 사용해야 하는 백그라운드에서 실행하기 위해 메인 WordPress와 작은 분리 스크립트를 작성합니다.
보관하려면 어떻게 해야 하나요?
어떤 도움이라도 감사합니다.
WordPress의 핵심 기능만 로드하는 최선의(가장 빠르고 안전한) 방법은SHORTINIT
다음과 같은 플래그:
define( 'SHORTINIT', true );
require( '/path/to/wp-load.php' );
//Here you can use WordPress core features, for example the $WPDB object
이것에 대한 자세한 내용과 로딩된 내용을 확인하려면 , 에서 코드를 체크해 주세요./wp-settings.php
이 섹션에는 다음 섹션이 섹션은 다음과 같습니다.
// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
return false;
즉, 이 이후로는 로딩이 되지 않으며, 보시는 바와 같이 많은 것이 있습니다.설치 공간은 단순히 로드하는 것보다 훨씬 작습니다.wp-load.php
WordPress 코어에 내장된 모든 기능에 액세스할 수 있습니다. 예를 들어 다음과 같습니다./wp-includes/wp-db.php
직접적으로.WP core의 많은 함수는 다른 파일에도 의존하며, 원하는 것을 하기 위해 어떤 파일을 포함해야 하는지 정확히 파악하는 것은 혼란스러울 수 있습니다. SHORTINIT
에는 필요한 의존관계가 포함되어 있기 때문에 이에 대해 걱정할 필요가 없습니다.
예를 들어 WPDB만 알고 있다면 물론 필요한 파일만 포함하는 것이 가장 빠른 방법입니다.SHORTINIT
는 WP 코어 및 종속성을 로드하는 보다 안전하고 표준화된 방법을 제공합니다.와 함께SHORTINIT
WordPress는 플러그인, 플러그인 API의 대부분 부분, 테마, 테마 기능 및 대부분의 관리 및 프런트엔드 기능을 로드하지 않습니다.이것이 일반적인 WordPress 설치에서 무거운 코드가 있는 부분입니다.대부분의 경우 내 생각에는SHORTINIT
필요한 파일만 포함하는 것에 비해 속도/퍼포먼스 면에서 작은 단점이 있습니다.또한 대부분의 경우 풀로드에 비해 퍼포먼스가 대폭 향상됩니다.
실제로.SHORTINIT
가장 좋은 해결책인 것 같습니다.@Pelmered 답변 참조...
참조용: SHORTINIT
는 WordPress 3.0(2010년 6월 17일)에 소개되었지만 릴리스 노트에 언급되지 않았음에도 불구하고 코드를 보면 추가되었음을 명확하게 알 수 있습니다.
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
// $wpdb is available, do stuff
는 WordPress라는 파일을 만으로 자신의 DBA( 레이어할 수 .db.php
해 두겠습니다.wp-content
디렉토리로 이동합니다.
WordPress와는 무관한 제가 작성한 클래스에서 데이터베이스에 액세스해야 하는 문제가 있었습니다.그러나 이 스크립트를 사용하여 완전히 새로운 DBA를 만들고 싶지는 않았습니다.
" "부터" 입니다.WPDB
할 수 하기 위해서 몇 써, .나는 그것을 지원하기 위해 몇 줄을 재빨리 쓰고 그것을 에 추가했습니다.db.php
<?php
class DB extends wpdb
{
protected static $instance = null;
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new DB(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
return self::$instance;
}
}
$wpdb = DB::getInstance();
시점에서, 「 」를 가 있는 .wpdb
곳 이외의 과 같이 수 .
$wpdb = DB::getInstance();
방법 global
.
하시면 됩니다.$wpdb
.php
다음 코드를 사용하여 테마 폴더 안에 있는 파일을 지정합니다.
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = $_SERVER['REQUEST_URI'];
$my_url = explode('wp-content' , $url);
$path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];
include_once $path . '/wp-config.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
global $wpdb;
★★★★★★★★★★★★★★★.require_once('../../../wp-load.php');
WordPress, WordPress, WordPress, WordPress는 WordPress를 사용합니다.할 수 되었습니다.global $wpdb;
wpdb 인 wp wp wp wp wp wp wp wp wp wp wp 。
wp-load만 포함하면 됩니다.php 파일을 스크립트에 넣습니다.
require('the/path/to/wp-load.php file');
이것도 효과가 있을 겁니다.
preg_match('/^(.+)wp-content\/.*/', dirname(__FILE__), $path);
include($path[1] . 'wp-load.php');
다음 두 단계로 충분합니다.
- wp-blog-header를 포함합니다.php 파일
- $wpdb를 사용하기 전에 글로벌 $wpdb로 설정합니다.
그 후 이 페이지에서 사용할 수 있는 모든 글로벌 변수를 지정합니다.wp-blog-header.php의 올바른 include 경로를 지정하십시오.여러 파일을 포함할 필요가 없습니다.
1개의 라인만으로 고속으로 경량화할 수 있습니다.
require(dirname(_FILE__)'/wp-blog-header.php');
그 이유는 WordPress가 index.php 로드를 초기화하기 때문에 index.php 를 체크하면 다음과 같이 표시됩니다.
require(dirname(_FILE__)'/wp-blog-header.php');
그러면 WordPress가 로드되고 부트스트랩됩니다.
따라서 WordPress 설치 외부에서 WordPress를 사용하려면 새 파일을 만든 다음 다음과 같이 입력하십시오.
require(dirname(_FILE__)'/wp-blog-header.php');
그런 다음 테스트의 경우 global $wpdb; var_export wpdb)로 입력합니다.
이제 모든 WordPress API와 데이터베이스 객체 $wpdb에 액세스할 수 있습니다.
2021년 6월 21일 현재, 이것은 문서 https://developer.wordpress.org/reference/classes/wpdb/,에 기재되어 있으며, 심리스하게 기능하고 있습니다.
$wpdb = $GLOBALS['wpdb'];
언급URL : https://stackoverflow.com/questions/5306612/using-wpdb-in-standalone-script
'programing' 카테고리의 다른 글
WooCommerce:카테고리 이름 표시 (0) | 2023.03.07 |
---|---|
각도 ng-변경 지연 (0) | 2023.03.07 |
Resangular의 .all()과 .one()의 차이점은 무엇입니까? (0) | 2023.03.07 |
"ng-disabled"에 여러 조건을 추가하려면 어떻게 해야 합니까? (0) | 2023.03.07 |
각도 데이터에서 원시 html 또는 표시 방법 (0) | 2023.03.07 |