source

Wordpress - 사용자 지정 컨텐츠 유형으로 URL에서 동적 JSON을 반환하려면 어떻게 해야 합니까?

factcode 2023. 9. 11. 22:16
반응형

Wordpress - 사용자 지정 컨텐츠 유형으로 URL에서 동적 JSON을 반환하려면 어떻게 해야 합니까?

우선 배경부터 말씀드리려 합니다.

https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html #//apple_ref/doc/uid/TP40016308-CH12-SW1

iOS 기기를 위한 웹사이트와 함께 작동하는 범용 링크를 얻을 수 있습니다.내 워드프레스 사이트는 공유 호스팅 환경에 있으므로 서버나 루트 파일에 접근할 수 없습니다.파일을 내 사이트(httpdocs)의 루트에 배치했는데 페이지로 이동하면 로드되지 않습니다.구글 검색을 할 때, 저는 "application/pkcs7-mime"(wordpress로 apple-app-site-association 파일 구성)의 컨텐츠 유형으로 파일을 제공하도록 서버를 구성해야 한다는 스택 오버플로우 게시물을 발견했습니다.말씀하신 대로 저는 그것에 접근할 수 없습니다.

저에게는 아주 익숙한 마이크로소프트 웹 API 프로젝트인 서브 도메인이 있습니다.저는 "apple-app-site-association"의 엔드포인트를 만들어 동적으로 json 응답을 코드로 구축하고 컨텐츠 타입을 설정하여 반송하였습니다.이것은 결국 작동했고 애플은 이것과 모든 것을 감지했습니다.이것은 내가 즉시 생성하기 때문에 서버에 파일이 필요하지 않고, 서버별로 어떤 것도 변경할 필요가 없기 때문에 흥미롭습니다.

그러나 문제는 메인 사이트 도메인이 윈도우 서브 도메인이 아닌 범용 링크가 되어야 한다는 것입니다.주요 사이트는 워드프레스입니다.mydomain.com/apple-app-site-association 로 이동하여 json과 컨텐츠 타입을 즉시 생성하여 제공하는 워드프레스에서도 동일한 작업을 수행할 수 있을지 생각하고 있습니다.

저는 워드프레스로 코딩을 해본 적이 없고 어디서부터 시작해야 할지도 모릅니다.

가능하다면 다음과 같은 방향을 명확히 하고 싶습니다.

mydomain.com/apple-app-site-association 을 사용하면 json을 제공하는 사용자 지정 기능 또는 페이지로 연결됩니다.json을 동적으로 서비스하게 만드는 코드를 가지고 있습니다.응답 내용 유형을 "application/pkcs7-mime"으로 설정하는 코드가 있습니다.물론 이 방법 없이 공유 서버에서 파일이 제공되지 않는 문제를 해결할 수 있는 방법을 아는 사람이 있다면 저도 이 방법에 열려 있습니다.제가 보기에는, 이것이 가능하다고 가정하는 유일한 방법일 수도 있습니다.

참고: WordPress가 루트 폴더에 설치되어 있다고 가정합니다.

그러니 당신이 원한다면.http://example.com/apple-app-site-association이렇게 JSON 콘텐츠를 제공하고 콘텐츠 유형을 갖습니다 (Content-Type글)정으로 합니다.application/pkcs7-mime할 은 과 과 은 중에서 선택할 수 있는 옵션입니다.

동적 컨텐츠

WordPress를 WordPress를 이 더 일 수 ..htaccess파일.파일.

사용할 수 있습니다.parse_requesthook; 이렇게 하면 사용자 지정(WordPress) 재작성 규칙이 필요 없고, 사용자 지정 페이지(포스트 유형)가 필요 없습니다.page), 파일을 .) JSON 파일을 만들 필요가 없습니다.

이 이 하고 하고 이 이 ,apple-app-site-association폴더 슬러그,서가는는서e서스ngd,er트g서tea는,가rapple-app-site-association.

이 테마 : )wp-content/themes/your-theme/functions.php):

<?php
add_action( 'parse_request', 'serve_apple_app_site_association', 0 );
function serve_apple_app_site_association( $wp ) {
    // Check if the request is /apple-app-site-association
    if ( 'apple-app-site-association' !== $wp->request ) {
        return;
    }

    // Array version of the JSON data.
    $data = array(
        'applinks'    => array(
            'apps'    => array(),
            'details' => array(
                array(
                    'appID' => '9JA89QQLNQ.com.apple.wwdc',
                    'paths' => array(
                        '/wwdc/news/',
                        '/videos/wwdc/2015/*',
                    ),
                ),
                array(
                    'appID' => 'ABCD1234.com.apple.wwdc',
                    'paths' => array(
                        '*',
                    ),
                ),
            ),
        ),
    );

    // Send headers.
    status_header( 200 );
    nocache_headers();
    header( 'Content-Type: application/pkcs7-mime' );

    // And serve the JSON data.
    echo wp_json_encode( $data );
    exit;
}

정적 컨텐츠

  1. 는 JSON 를 의 에 합니다 합니다 에 를 의 파일apple-app-site-association( 확장자 ) 및볼수 있는 루트 즉,명음고수다는에트볼을다에트(는eeeuri음ne )wp-config.php그리고..htaccess파일

  2. 이것을 당신의 것에 추가합니다..htaccess선택사항:

<Files apple-app-site-association>
        Header set Content-Type application/pkcs7-mime
</Files>

<Files>및는Header당신을 위해 일하지 마세요. 그러면 당신은 위의 첫번째 옵션을 사용할 수 있지만, 다음과 같은 것을 사용할 수 있습니다.readfile()정적 파일을 읽습니다.

다시 에서 지원되지 ) ( URL 할 되지 할 를 의 에서 를 할 를 의 apple-app-site-association트에다합니다를 추가합니다.index.php해당 폴더와 해당 파일에 저장됩니다.

<?php
header( 'Content-Type: application/pkcs7-mime' );
// Read the static file or just generate a dynamic content.
@readfile( __DIR__ . '/apple-app-site-association.json' );
exit;

언급URL : https://stackoverflow.com/questions/56728175/wordpress-how-does-one-make-a-url-return-dynamic-json-with-custom-content-type

반응형