bestsource

Wordpress Core를 자체 스크립트에 포함

bestsource 2023. 3. 10. 22:37
반응형

Wordpress Core를 자체 스크립트에 포함

Wordpress core를 자체 스크립트로 Import하여 wp_query 등의 기능을 사용하려고 합니다.서브디렉토리(자체 프레임워크)에 스크립트를 작성하고 워드프레스로 확장하려고 하는데 스크립트가 오류를 발생시킬 때마다 다음과 같이 됩니다.

치명적 오류: .../wordpress/wp-includes/taxonomy의 비개체에 있는 멤버 함수 add_rewrite_tag()를 호출합니다.333행의 php

예를 들어 (add_action('init', 'create_initial_taxonomies', 0)을 삭제했을 경우:

치명적 오류: 1006 회선의 .../wordpress/wp-includes/post.php에 있는 오브젝트 이외의 멤버함수 add_rewrite_tag()를 호출합니다.

비개체는 $wp_rewrite-object입니다.나는 어떤 것을 에코했고 첫 번째 $wp_rewrite는 유효하지만 다음 통화에서는 유효하지 않다는 것을 알아냈다.WP의 핵심 파일에서는 아무것도 바꾸지 않았어요.

다음을 호출하여 코어를 포함하려고 합니다.

    require_once(BASE_PATH . 'wp-load.php');

저한테 좋은 생각 있는 사람 있어요?

감사해요.

간단한 답변, 다음을 수행합니다.

define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
require(BASE_PATH . 'wp-load.php');

긴 답변입니다. PHP를 사용한 스크립트 Import에 대한 미묘한 이해입니다.

로컬 변수를 정의하면 모든 함수 외에 'global'을 사용하여 함수 내에서 검색할 수 있습니다.함수 내에 로컬 변수가 있는 경우 해당 변수가 글로벌하다고 정의되지 않는 한 나중에 글로벌을 사용하여 가져올 수 없습니다.

스크립트 wp-settings.php'가 문제의 원인입니다.'wp-load.php'를 포함하기 위해 콜을 통해 포함되어 있습니다.

여기서 정의된 변수는 글로벌하다고 명시되어 있지 않습니다.대신 스크립트는 항상 함수 외부에서 실행되므로 자동으로 글로벌하다고 가정합니다.

$wordpress = 'foo';

function wordpressFunction() {
    global $wordpress;
}

함수 내에서 스크립트를 Import하기 때문에 스크립트는 로컬 변수가 됩니다.기본적으로 다음과 같은 작업을 수행합니다.

function myFramework() {
    $wordpress = 'foo';

    function wordpressFunction() {
        global $wordpress;
    }
}

따라서 스크립트를 Import하기 전에 직접 글로벌하게 정의하는 것이 수정 방법입니다.이제 $wp_query 및 글로벌하게 정의된 다른 항목이 올바르게 검색됩니다.

에서 프로그래밍된 모든 워드프레스에 액세스하는 가장 쉬운 방법은 다음을 사용하는 것입니다.

require_once('/../../../wp-blog-header.php'); // Use actual root path to wp-blog-header.php
header("HTTP/1.0 200 OK");

위 코드를 사용하면 WordPress에서 템플릿을 사용할 때 일반적으로 얻을 수 있는 모든 기능을 사용할 수 있습니다.위에 열거된 다른 모든 방법을 시도해 봤는데 이게 단연 최고예요.

저도 같은 실수를 했어요.퍼말링크와 함께 기사도 좀 구하려고요이 점이 도움이 되었습니다.

global $wpdb, $wp_rewrite;
require '/(...)/wp-config.php';

$result = $wpdb->get_results( $wpdb->prepare( ... ) );
foreach( $result as &$item )
  $item->link = get_permalink( $item->ID );

또 다른 케이스인 http://www.stormyfrog.com/using-wpdb-outside-wordpress/에서도 도움이 되었습니다.

언급URL : https://stackoverflow.com/questions/9101503/include-wordpress-core-into-own-scripts

반응형