为什么我的插件被WordPress.org资源库拒绝了?

时间:2013-06-09 作者:user33913

我已经制作了一个WordPress插件,它可以正常工作。但当我把它发送到WordPress时。org插件团队,他们回答:

正在调用wp load。php直接

包括wp配置。php,wp博客标题。php,wp加载。php或几乎任何其他WordPress核心文件,您必须通过include直接调用,这不是一个好主意,我们不能批准这样做的插件,除非它有很好的理由加载文件。由于并非所有WordPress安装都具有完全相同的文件结构,因此很容易失败。通常插件将包括wp config。php或wp加载。php来访问核心WordPress函数,但有更好的方法来实现这一点。最好将处理函数(需要但无法访问核心函数的函数)绑定到一个动作挂钩中,例如;初始化(&Q);或“或”;admin\\u init";。

有关更多信息,请参阅插件API参考:http://codex.wordpress.org/Plugin_API 如果您试图使用AJAX,请阅读以下内容:http://codex.wordpress.org/AJAX_in_Plugins

我不知道该怎么办:(

这是我的插件http://szymoon.nazwa.pl/plugins/Printer-Friendly-WP.zip

哪里有制作正确插件的好例子?或者是被WordPress接受的。组织团队。

1 个回复
SO网友:shea

这是因为您直接从插件文件夹中调用PHP文件。这不好有两个原因,第一个原因是有些人阻止直接访问wp-content 文件夹第二,你需要包括wp-load.php 访问WordPress API。

而不是链接到…

site_url().""."/wp-content/plugins/Printer-Friendly-WP/print.php?id=page_id="."".  get_the_ID()`
…这是一个直接链接,很容易断开,只需向当前post permalink添加一个查询参数…

add_query_arg( \'print-page\', true, get_permalink() )
…然后检查URL是否包含print-page 加载模板之前的查询参数:

function load_printed_page() {
    if ( ! get_query_arg( \'print-page\' ) || ! $postid = get_the_ID() )
        return;

        query_posts(\'p=\'.$postid)

        if (have_posts()) :
             while (have_posts()) : the_post(); ?>

            ...

        endwhile; endif;
}
add_action( \'template_redirect\', \'load_printed_page\' );
此外,您应该使用WP_Queryget_posts() 而不是query_posts

结束

相关推荐

Wp-plugins(必须使用Plugins)URL是否可以在unctions.php中使用?

wp插件(必须使用插件)URL是否可以作为在函数中使用的目标。php?我有一个mu函数。mu plugins文件夹中的php文件。一个函数调用javascript文件(alerts.js) 位于example.com/wp-content/mu-plugins/js/. 如何在我的函数中定位mu插件文件夹?目前,我正在使用get_site_url() . \'/wp-content/mu-plugins/js/alerts.js\',虽然与问题不完全相关,但这是用于调用javascript文件的完整函数: