programing

스탠드아론 스크립트에서 WPDB를 사용하시겠습니까?

magicmemo 2023. 3. 7. 21:14
반응형

스탠드아론 스크립트에서 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');

다음 두 단계로 충분합니다.

  1. wp-blog-header를 포함합니다.php 파일
  2. $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

반응형