将文件从插件迁移到主题并更改其路径→以创建REST端点

时间:2017-08-25 作者:The WP Intermediate

<?php echo plugins_url().\'/jamesplugin/assets/library/classes/process_mailchimp.php\';?>
上面是保存在插件中的文件路径,但我想将该文件传输到一个主题,比如这里→

inc/process_mailchimp.php
为了这个plugins_url() 它的主题是什么?

如果我需要向您提供任何额外信息,请告诉我。

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

我不知道为什么要打印PHP文件的路径,因为这不是一个好的做法。但要获得主题的等效功能,可以使用:

对于父主题:get_template_directory_uri();get_stylesheet_uri();两者都没有尾部斜杠。

重要提示

不要直接从插件或主题文件夹ping PHP文件。包括一个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调用中使用REST端点作为URL。将URL设置为:

<?php echo rest_url(\'/wpnovice/v1/my_path/\'); ?>

结束

相关推荐

Virtual Pages plugins

我很难让插件正常工作Virtual Pages (WordPress插件可简化虚拟页面的创建)我确实进行了编辑,根据查询创建了一个循环。add_action( \'gm_virtual_pages\', function( $controller ) { /* Creating virtuals pages for companies */ $args = array( \'post_type\' => array(\'companies\',), \'post_status\'