web-dev-qa-db-fra.com

Migration d’un fichier du plug-in vers le thème et modification de son chemin → créez à la place une REST point final

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

Ce qui précède est le chemin d’un fichier conservé dans un plugin, mais je souhaite transférer ce fichier dans un thème, par exemple ici →

inc/process_mailchimp.php

Pour cette plugins_url() quel sera son équivalent de thème?

S'il vous plaît laissez-moi savoir si j'ai besoin de vous fournir des informations supplémentaires.

1
The WP Novice

Je ne suis pas sûr de savoir pourquoi essayez-vous d'imprimer le chemin du fichier PHP, car ce n'est pas une bonne pratique. Mais pour obtenir la fonction équivalente pour les thèmes, vous pouvez utiliser:

  • Pour les thèmes parents: get_template_directory_uri();
  • Pour les thèmes pour les enfants: get_stylesheet_uri();

Les deux sont sans slash.

Note importante

Ne cinglez pas un fichier PHP directement à partir du dossier de votre plugin ou de votre thème. L'inclusion d'un fichier PHP (par exemple, à l'aide de require_once()) convient, mais son accès direct par le navigateur ne vous convient pas. La meilleure pratique est même de vérifier si le fichier est directement accédé et de bloquer l'accès:

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

ABSPATH est une constante, définie par WordPress, qui contient le chemin d'accès absolu à la racine de votre installation. Si ce n'est pas défini, cela signifie que votre fichier est accédé directement, peut-être par un pirate informatique.

Créez donc un noeud final REST et utilisez-le. Voici un exemple simple pour vous.

Commencez par créer un terminal à appeler. C'est aussi simple que cela:

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

Ensuite, effectuez le calcul dans votre fonction de rappel et renvoyez la valeur à cet endroit:

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

La dernière étape consiste à utiliser le noeud final REST _ en tant qu'URL dans votre appel Ajax. Définissez votre URL sur ceci:

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