0

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

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

我有一个复选框和一个链接。该链接将转到 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

4 回答 4

1

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

于 2013-06-25T15:23:11.893 回答
0

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

  1. 为您的表单创建简码

    add_shortcode('myshortcode', 'my_shortcode_handler');

  2. 创建函数 my_shortcode_handler

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

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

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

PS 在您的插件主文件中插入所有这些代码。

问候

于 2013-06-25T15:46:47.357 回答
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/ (虽然它是一个帖子类型,而不是一个函数)

于 2013-06-25T16:46:42.670 回答
0

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

但是,您可以将库添加到插件中,以便将它们用于特定任务。您可能需要为您的要求构建一个插件。但是如果你擅长 PHP,你不会有问题。

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

http://codex.wordpress.org/Plugin_API

于 2013-06-25T15:20:47.240 回答