스탠드아론 스크립트에서 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.phpWordPress 코어에 내장된 모든 기능에 액세스할 수 있습니다. 예를 들어 다음과 같습니다./wp-includes/wp-db.php직접적으로.WP core의 많은 함수는 다른 파일에도 의존하며, 원하는 것을 하기 위해 어떤 파일을 포함해야 하는지 정확히 파악하는 것은 혼란스러울 수 있습니다. SHORTINIT에는 필요한 의존관계가 포함되어 있기 때문에 이에 대해 걱정할 필요가 없습니다.
예를 들어 WPDB만 알고 있다면 물론 필요한 파일만 포함하는 것이 가장 빠른 방법입니다.SHORTINIT는 WP 코어 및 종속성을 로드하는 보다 안전하고 표준화된 방법을 제공합니다.와 함께SHORTINITWordPress는 플러그인, 플러그인 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 |