如何将链接的自定义PHP页面添加到插件中

时间:2013-06-25 14:54:34

标签: php wordpress plugins

我正在尝试构建我的第一个插件。

我有一个表单,用于收集创建帖子所需的信息。在我允许帖子进入数据库之前,我需要强制用户接受我的服务条款。

我有一个复选框和一个链接。该链接将转到TOS页面(我的自定义PHP页面),一旦用户接受TOS,用户就可以返回填写了数据的FORM,并选中复选框。

用户也可以选中此框并提交他们的帖子。

我的问题是如何包装我的TOS页面以使其与现有网站相匹配。我想要将我的PHP页面包装起来,以使用用户为其网站选择的任何主题。另外,我想回到表单中,它包含在用户主题中,就像它最初一样。

我用钩子打开我的表格,所以一切都很好。

我想了解如何以正确的方式做到这一点,而不是廉价而简单的方法。

提前感谢您提供的任何帮助。

<a href="test.php">To TOS</a>

<?PHP
    echo '<HTML><HEAD></HEAD><BODY>Terms Of Service</br>1. TOS 1</br>2. TOS 2<BODY></HTML>';
?>

4 个答案:

答案 0 :(得分:1)

我读到了假网页。 http://betterwp.net/98-wordpress-create-fake-pages/这可能是你的答案。

答案 1 :(得分:0)

看起来您需要学习Wordpress的基础知识,因为在您创建插件之后,它将适用于大多数主题,除非您创建针对特定类或ID的特定主题的插件。

但是,您可以向插件添加库,以便它可以将它们用于特定任务。您可能需要为您要求的内容构建一个插件。但如果你对PHP很好,你就不会有问题。

我建议从Wordpress Codex开始参考插件API:

http://codex.wordpress.org/Plugin_API

答案 2 :(得分:0)

有几个步骤可以做到这一点。我这样做的方式如下

  1. 为表单创建短代码

    add_shortcode('myshortcode','my_shortcode_handler');

  2. 创建函数my_shortcode_handler

    function my_shortcode_handler($ atts,$ content = null){    include('myhtmlform.php'); }

  3. 创建myhtmlform.php,插入您的逻辑。

  4. 在您想要表单的任何页面中调用“[myshortcode]”

  5. P.S。  将所有这些代码插入到插件主文件中。

    此致

答案 3 :(得分:0)

最好(也是最复杂的方式)是添加重写规则并重写标记:

添加如下标记: http://codex.wordpress.org/Rewrite_API/add_rewrite_tag

然后是重写规则: http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

然后你会有一个像YOURDOMAIN.com/YOUR-URL这样的指针, 使用全局WP Query中的适当变量指向模板文件, 您可以使用动作'template_redirect'

执行此操作

所以:

//add the rewrite tag to the WP Query (called on the init action, or earlier)
add_rewrite_tag('%terms-of-service%','([^&]+)');

//add a rewrite rule: (init or earlier)
add_rewrite_rule('^terms-of-service/?','index.php?tos=true','top');

//And then add an action on 'template_redirect':
add_action( 'template_redirect', 'tos_query' );

function tos_query(){

   global $wp_query;

   if( isset( $wp_query->query_vars['terms-of-service'] ) ){

      locate_template( --YOUR URL-- )

   }

}

请记住,WordPress的重写api是一个烦人的雷区,你将需要使用

    global $wp_rewrite;
    $wp_rewrite->flush_rules();

在一切正常之前,可能......

这个插件有一个很好的方式来处理重定向:http://wordpress.org/plugins/simple-portfolio/(虽然它适用于后期类型,而不是函数)