动态URL并将数据传递给IFRAME

时间:2016-09-21 作者:SNAG

我有一个WordPress营销网站(www.example.com) 和后端应用程序站点(app.example.com). 我想做的是:如果有人访问URL:

www.example.com/profile/<<profileId>>
我想创建一个主要包含一般内容的页面iframe 具有src

my.example.com/profile/<<profileId>>
现在我有两个问题:

页面能否具有动态URL?如果我尝试将URL设置为www.example.com/profile/*/ 它变成www.example.com/profile/iframe src?有人能告诉我一个插件/解决方案吗?

2 个回复
SO网友:Ahmed Fouad

Step 1:

在WordPress仪表板中创建一个带有slug“profile”的页面。

Step 2

使用此功能注册profileId 变量。

add_filter(\'query_vars\', \'wp233_query_vars\');
function wp233_query_vars( $query_vars ){
    $query_vars[] = \'profileId\';
    return $query_vars;
}
并向wordpress添加如下重写规则:

add_action( \'init\', \'wp233_add_rewrite_rules\' );
function wp233_add_rewrite_rules() {

  add_rewrite_rule(
    \'^profile/([^/]+)?$\',
    \'index.php?pagename=profile&profileId=$matches[1]\',
    \'top\');

}

Step 3

现在,您可以像这样访问查询变量:

http://yoursite.com/profile/xxxx/
现在,您应该能够通过挂接适当的操作来提取profileId

Example

add_action( \'template_redirect\', \'wp233_get_profile_id\' );
function wp233_get_profile_id() {

   $profile_id = get_query_var( \'profileId\' );
   if ( $profile_id ) {

    // do some magic work. you now captured the profile id
    // which was passed to url.com/profile/{ID}/ -> here.

   }

}

SO网友:cjbj

这应该不会太难。首先你必须得到<<profileID>> 当前页面/帖子的一部分。如何获取它,取决于它是什么,以及在模板中调用它的位置。例如,如果“profile”是自定义的帖子类型,那么<<profileID>> 是帖子的鼻涕虫,你可以这样取回,大概在single.php:

$profileID = get_post_field( \'post_name\', get_post());
剩下的是简单的PHP:

echo \'<iframe src="my.example.com/profile/\' . $profileID \'/></iframe>\';
现在,您的页面中包含iframe 你想在没有子弹的情况下显示它。答案是here.

相关推荐

块编辑器:沙盒IFRAME显示过时的HTML

即使用户禁用流行Lazy Load for Videos 插件和前端会正确重置视频,这样视频就不会再延迟加载,古腾堡块也不会重置。下面的屏幕截图显示了iframe如何仍然包含停用插件的HTML:我清除了浏览器缓存和cookie,确保清空了oembed元数据缓存,并尝试使用中的命令清除更多缓存How can I clear oEmbed caches for YouTube on posts as they are loaded.如何确保旧的HTML消失,而支持默认的Youtube嵌入行为?