PDF下载-使用WordPress功能

时间:2017-11-14 作者:QuickSort

我正在创建一个用户可以下载文件的插件。目前我显示的下载链接如下:

<a href="plugin/directory/some/path/download.php?file_to_download_id=1">Some Download</a>

Problem:

我需要使用wordpress的核心功能,如is_user_logged_in()get_current_user_id() 在下载中。php。如何在这个php文件中使用这些函数?

(附:我不想在download.php中包含wp load)

3 个回复
SO网友:Robin

您应该在插件中创建一个函数,在其中侦听特定URL或监视特定参数。例如,要生成下载链接:

<?php
    $nonce = wp_create_nonce( \'download-\' . $filename );
    echo \'<a href="/?_wp_nonce="\' . $nonce . \'&download=\' . $filename . \'">Some Download</a>\';
?>
下载文件:

if ( ! empty( $_GET[\'_wp_nonce\'] ) && ! empty( $_GET[\'download\'] ) && wp_verify_nonce( $_GET[\'_wp_nonce\'], \'download-\' . $_GET[\'download\'] ) ) {
    /*
     * Check if file exists and then output the right headers and the content of the file
     */

    exit;
}

SO网友:brianjohnhanna

WordPress提供了两个Cookie来跟踪用户是否登录以及他们的用户ID是什么。有关这些内容,请参见this page in the Codex:

登录后,wordpress设置wordpress\\u logged\\u in\\uHash[哈希]cookie,该cookie指示您何时登录,以及您是谁,以供大多数界面使用。

WordPress还设置了一些wp设置-{time}-[UID]cookie。末尾的数字是用户数据库表中的单个用户ID。这用于自定义管理界面的视图,也可能是主站点界面。

如果你一定要避免装载wp-load.php 在您的download.php 文件中,您可以使用$_COOKIE global 并分析wp-settings-{time}-[UID] 获取用户ID(“UID”)的cookie。

老实说,我认为这与在你的download.php 文件:

define( \'WP_USE_THEMES\', false );
require( \'./wp-load.php\' ); 
这不会加载任何主题文件或模板函数,但会立即让您访问您正在寻找的核心WordPress函数。我会鼓励你尝试两种方式(如果你愿意的话),看看性能的差异。。。这不会太多,尤其是在运行PHP7的服务器上。

SO网友:Pratik bhatt

正如您所提到的,该文件位于您的插件文件夹中,您无需添加wp负载。如果您不能使用默认的WordPress函数,请在此处输入php文件。您需要包含插件主PHP文件中的文件。

希望这能解决您的疑问。

结束

相关推荐

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\'