【问题标题】:Change Source URL in iFrame Based on current time根据当前时间更改 iFrame 中的源 URL
【发布时间】:2021-03-13 16:41:01
【问题描述】:

我们每周举办三场直播活动,使用唯一的 iframe 嵌入代码,但需要这三个活动在我们的 wordpress 网站上共享一个 iframe 视频嵌入容器,并且只显示活跃的直播。我们的活动时间为周日上午 8:30、上午 10 点和上午 11:30。如何根据当前时间更改 iframe 中的源 url?

例如,如果我在周日上午 9 点访问该网站,则将播放上午 8:30 的事件或显示在 iframe 中的事件。而如果我在上午 10:15 访问该站点,则上午 10 点的事件将在 iframe 中播放或显示。

我们的目标是在我们的主页上嵌入一个视频容器,以便在此期间任何人访问该网站时都会显示现场活动。

【问题讨论】:

  • 您可以创建一个自定义短代码来检查日期时间(访问页面时)并根据日期时间标准更改 iframe URL。然后您可以将短代码添加到任何 wordpress 页面或帖子中。
  • 太棒了@ozgur!谢谢你。老实说,我没有太多的编码经验,我最好怎么做?
  • 我发布了我的示例代码作为答案。希望对您有所帮助...
  • 非常感谢@ozgur。感谢您的帮助!
  • 欢迎您@CP50。如果对您有用,请考虑接受答案

标签: javascript wordpress iframe vimeo


【解决方案1】:

此代码定义了 3 个不同的事件时间,并检查 today 是否为 `Sunday. 经过测试并且可以工作。

您可以将它包含在您的子主题的函数 php 中或安装 Code Snippets 插件并将其添加为新的 sn-p。

确保您设置了正确的time zone。出于测试目的,我使用 Europe/Istanbul 作为我的时区。这是您可以使用的time zones 列表。

另一个重要提示是:出于安全考虑,大多数网站不允许在iframe 内访问它们。如果 iframe 中的 URL 有此限制,您可能会收到 'X-Frame-Options' to 'sameorigin' 错误。

我注释了代码中的所有部分,因此您可以在需要时轻松更改活动时间和活动日期。我假设结束时间是 14:00 左右。您可以在代码中更改它。

设置完成后,只需将[iframe_content]短代码添加到您要显示 iframe 的页面。

function shortcode_iframe() {
    // Set the correct timezone
    date_default_timezone_set("Europe/Istanbul");
    
    // Set event start times
    $start1 = date("08:30");
    $start2 = date("10:00");
    $start3 = date("11:30");
    $end = date ("14:00"); // No events after this time
    
    // Current time and day
    $now = date("H:i");
    $day = date('D');

    // Define URLs for each condition
    $url1 = 'https://www.domain1.com';
    $url2 = 'https://www.domain2.com';
    $url3 = 'https://www.domain3.com';

    // Check for no event condition
    $noevent = true;
    
    // Check conditions only if today is Sunday
    if ($day == "Sun") {

        // Event 1
        if ($now >= $start1 && $now < $start2) {
            $url = $url1;
            $noevent = false;
        }

        // Event 2
        if ($now >= $start2 && $now < $start3) {
            $url = $url2;
            $noevent = false;
        }
        
        // Event 3
        if ($now >= $start3 && $now < $end) {
            $url = $url3;
            $noevent = false;
        }
        
    }

    // Generate iframe code if between registered event times
    if ($noevent) {
        $iframeelement="No event is registered at this time";
    }
    else {
        $iframeelement = '<iframe src="'.$url.'" style="height:600px; width:800px;"></iframe>';                     
    }
    return $iframeelement;      

    
}
add_shortcode('iframe_content', 'shortcode_iframe');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多