插件怎么会有自己的页面呢?

时间:2012-01-30 作者:Roman

我的插件需要为公共流量向Wordpress引入许多接口。引入新接口的最佳方式是什么?

2 个回复
SO网友:Dwayne Charrington

信不信由你,WordPress官方文档中有一个很好的页面,涵盖了这个主题,叫做管理菜单。它还提供了如何在插件代码中使用Wordpress挂钩来添加自定义设置页面和其他类似页面的示例代码。

可以找到该页面here. 在阅读之前,把水壶烧开,给自己冲杯咖啡或茶,因为这是一个很大的页面。它甚至涵盖了添加表单和保存插件设置等内容,您可以访问这些插件。

**更新**

在进一步了解您的要求后,很明显您希望从插件中创建Wordpress页面,而不是管理屏幕。根据您是否希望在激活时创建它,或者用户何时执行特定操作,我假设您希望在激活时创建它,并在停用时删除它。

我没有添加用于删除页面的代码,但您应该能够解决这部分问题。激活插件后,应在页面中添加以下内容。

    <?php

    register_activation_hook(__FILE__, \'activate_plugin\');
    register_deactivation_hook(__FILE__, \'deactivate_plugin\');
    register_uninstall_hook(__FILE__, \'uninstall_plugin\');

    function activate_plugin() {

        // This function creates the pages
        create_pages();
    }

    function deactivate_plugin() {

        // This function removes the pages
        remove_pages();
    }

    function uninstall_plugin() {

        // This function removes the pages
        remove_pages();
    }

    function create_pages() {

        // Create post object
        $_p = array();
        $_p[\'post_title\']     = "Some page title";
        $_p[\'post_content\']   = "This is content in a page added via a plugin. This was not added manually, run!";
        $_p[\'post_status\']    = \'publish\';
        $_p[\'post_type\']      = \'page\';
        $_p[\'comment_status\'] = \'closed\';
        $_p[\'ping_status\']    = \'closed\';
        $_p[\'post_category\'] = array(1); // the default \'Uncategorised\'

        $page_id = wp_insert_post($_p);

        if ( $page_id ) {

            return true;

        }

    }

    function remove_pages() {

        // Code in here to remove pages you added

    }

?>
如果您在使用示例代码时有任何疑问或问题,请张贴您试图完成的任务,有人会帮您解决。祝你好运

SO网友:Andrew

我不确定Dwayne关于如何创建WordPress“页面”的回答是否是海报想要的。以下是创建WordPress页面的一些缺点。

它可能会干扰网站,例如开始显示在菜单上基于海报对“WordPress接口”的渴望,我假设Am01想要创建一个“页面”(小写),而不是WordPress的“页面”--即,只是一些创建任意HTML的任意PHP。

我也有同样的问题。我需要一个用于OAuth登录序列的回调URL。此外,我还想为我的插件创建一个自包含的测试平台页面。我是这样做的:

创建了一个文件foo.php 在我的插件目录中

<?php
// HACK: initialize the WordPress environment, enough to use the Plugin
require_once( dirname(__FILE__) . \'/../../../wp-load.php\' );
我在下面写了我的代码。该代码可以对WordPress和插件进行所有正常调用。

参见插件中的页面plugins_url(\'foo.php\', __FILE__).wp-load.php. 如果插件目录位于非默认位置,则可能无法工作。此外,该页面的URL非常难看(/wp-content/...).

但我找不到一个官方或更干净的方法来做到这一点。如果有人有,我会很感激的!

结束

相关推荐

How to access custom pages

这应该是一个简单的问题。在像themeforest这样的网站上,你可以购买其他人创建的主题,当你预览主题时,几乎所有的主题都会有单独的页面供你查看单独的功能例如,如果一个主题有一个公文包,一个有侧边栏的博客,一个没有侧边栏的博客,一个有2个侧边栏的博客。他们会将您链接到不同的页面,以查看每个页面的外观。你是怎么做到的?我的意思是,如果我只是建立一个名为portfolio的文件。如果我转到portfolio,请使用php并将所有代码用于构建该页面。它不会加载该页面,所以我如何访问单独的文件,比如公文包。ph