web-dev-qa-db-ja.com

プラグインからテーマへのファイルの移行とパスの変更→代わりに REST 終点

<?php echo plugins_url().'/jamesplugin/assets/library/classes/process_mailchimp.php';?>

上記はプラグインに保存されているファイルのパスですが、ここで言うテーマにそのファイルを転送したいのですが→

inc/process_mailchimp.php

このplugins_url()について、そのテーマと同等のものは何ですか?

追加情報を提供する必要がある場合は、お知らせください。

1
The WP Novice

なぜあなたはPHPファイルのパスを印刷しようとしているのかよくわかりません。しかし、テーマと同等の機能を得るには、次のようにします。

  • 親テーマの場合:get_template_directory_uri();
  • 子供向けテーマ:get_stylesheet_uri();

どちらも末尾のスラッシュがありません。

重要な注意点

プラグインやテーマのフォルダからPHPファイルに直接pingしないでください。 PHPファイルを含める(たとえばrequire_once()を使用する)ことは問題ありませんが、ブラウザから直接アクセスすることはできません。より良い方法は、ファイルが直接アクセスされているかどうかを確認し、アクセスをブロックすることです。

if( !defined( 'ABSPATH' ) ) {
    die();
}

ABSPATHはWordPressで定義された定数で、インストールルートへの絶対パスが含まれています。それが定義されていない場合、それはあなたのファイルがおそらくハッカーによって直接アクセスされていることを意味します。

そのため、代わりにRESTエンドポイントを作成してそれを使用してください。これはあなたのための簡単な例です。

まず、呼び出すエンドポイントを作成します。それはこれと同じくらい簡単です:

add_action( 'rest_api_init', 'my_endpoint' );
function my_endpoint() {
    register_rest_route( 
        'wpnovice/v1', '/my_path/', 
        array(
            'methods'  => 'GET',
            'callback' => 'wpnovice_callback'
        )
    );
}

その後、コールバック関数で計算を行い、そこで値を返します。

function wpnovice_callback( $request ){
    // Your code here
    return $data;
}

最後の段階では、Ajax呼び出しでURLとしてRESTエンドポイントを使用します。これにあなたのURLを設定します。

<?php echo rest_url('/wpnovice/v1/my_path/'); ?>
3
Jack Johansson