0

我正在弄清楚如何使用时间日期条件将类添加到 wordpress 正文元素,有一个示例:

jQuery(document).ready(function() {



function applyclass()
{
var d = new Date();
var n = d.getHours();





if (n > 20 && n < 06)
jQuery('body').addClass('night');

else if (n > 16 && n < 19)
jQuery('body').addClass('sunset');

else
jQuery('body').addClass('day');
}
window.onload = applyclass;


});

我检查了所有内容,包括文件夹位置,没有控制台错误,但问题是这个脚本没有执行。

谢谢!

4

5 回答 5

2

你最好在 body 函数中添加一个类

<body <?php body_class($class); ?>>

而不是用 jQuery 重写它。看

http://codex.wordpress.org/Function_Reference/body_class#Add_Classes_By_Filters

关于如何在你的主题的functions.php文件中挂钩到body类。

于 2012-10-13T02:51:41.383 回答
1

您的 if 语句正在测试错误的条件。

if (n > 20 && n < 06)
    jQuery('body').addClass('night');

n不能大于 20 且小于 6。(您也不需要数字前面的零;我认为这没有,但没有必要)

您也不需要该window.onload部分,因为整个代码块只会在文档加载后执行。相反,您可以只调用applyclass()document.ready 并将函数移出块。

但除此之外,代码没有错,逻辑错了。弄清楚你想要它做什么并改变 if 语句的条件,它应该可以工作。

于 2012-10-13T02:21:15.337 回答
0

我找到了一个解决方案,我删除了 jQuery(document).ready(function () {} 并修改了一些语句,它现在可以工作了。这是我的片段解决了我的问题,请随时优化这个片段。感谢您回答我的问题!

    function applyclass()
{
var d = new Date();
var n = d.getHours();


if (n == 5)
jQuery('body').addClass('night');
if (n == 4)
jQuery('body').addClass('night');
if (n == 3)
jQuery('body').addClass('night');
if (n == 2)
jQuery('body').addClass('night');
if (n == 1)
jQuery('body').addClass('night');
if (n == 0)
jQuery('body').addClass('night');
if (n == 23)
jQuery('body').addClass('night');
if (n == 22)
jQuery('body').addClass('night');
if (n == 21)
jQuery('body').addClass('night');
if (n == 20)
jQuery('body').addClass('night');


else if (n == 6)
jQuery('body').addClass('sunset');
else if (n == 7)
jQuery('body').addClass('sunset');
else if (n == 8)
jQuery('body').addClass('sunset');
else if (n == 18)
jQuery('body').addClass('sunset');
else if (n == 19)
jQuery('body').addClass('sunset');

else if (n == 9)
jQuery('body').addClass('day');
else if (n == 10)
jQuery('body').addClass('day');
else if (n == 11)
jQuery('body').addClass('day');
else if (n == 12)
jQuery('body').addClass('day');
else if (n == 13)
jQuery('body').addClass('day');
else if (n == 14)
jQuery('body').addClass('day');
else if (n == 15)
jQuery('body').addClass('day');
else if (n == 16)
jQuery('body').addClass('day');
else if (n == 17)
jQuery('body').addClass('day');

}
window.onload = applyclass;
于 2012-10-13T04:12:04.647 回答
0

尝试删除 window.onload 语句。这是多余的。将其替换为对您的函数的调用:

applyclass();

第一行:

jQuery(document).ready(function() {

已经确保在加载 DOM 之前它不会运行。

于 2012-10-13T02:21:38.007 回答
0

我知道您可能不是在寻找 PHP 函数,但这是我所做的。这可以添加到functions.php https://gist.github.com/Garconis/11e7e4c316b4f5c4e5dfcbe7d916f5c3

<?php
// Add the times and days to the body classes
// e.g., date-day-wednesday date-ymd-20170614 date-month-june time-military-1317 time-pm time-early-afternoon
add_filter( 'body_class', 'add_date_info_to_class_names' );
function add_date_info_to_class_names( $classes ) {
    // current day of week name
    $classes[] = 'date-day-' . strtolower(date_i18n('l'));
    // current full date YYYYMMDD
    $classes[] = 'date-ymd-' . strtolower(date_i18n('Ymd'));
    // current month name
    $classes[] = 'date-month-' . strtolower(date_i18n('F'));
    // current military time HHMM
    $classes[] = 'time-military-' . strtolower(date_i18n('Hi'));
    // check hour and add am or pm class
    if ( date_i18n('H') >= 12 ){
        $classes[] = 'time-pm';
    } else {
        $classes[] = 'time-am';
    }
    // check hour and add time of day descriptor
    if (preg_match("/(00|01|02)/i", date_i18n('H'))){
      $classes[] = 'time-early-night';
    }
    elseif (preg_match("/(03|04|05)/i", date_i18n('H'))){
      $classes[] = 'time-late-night';
    }
    elseif (preg_match("/(06|07|08)/i", date_i18n('H'))){
      $classes[] = 'time-early-morning';
    }
    elseif (preg_match("/(09|10|11)/i", date_i18n('H'))){
      $classes[] = 'time-late-morning';
    }
    elseif (preg_match("/(12|13|14)/i", date_i18n('H'))){
      $classes[] = 'time-early-afternoon';
    }
    elseif (preg_match("/(15|16|17)/i", date_i18n('H'))){
      $classes[] = 'time-late-afternoon';
    }
    elseif (preg_match("/(18|19|20)/i", date_i18n('H'))){
      $classes[] = 'time-early-evening';
    }
    elseif (preg_match("/(21|22|23)/i", date_i18n('H'))){
      $classes[] = 'time-late-evening';
    }
    return $classes;
}
于 2017-07-26T16:20:41.587 回答