Wordpress |在一天中的特定时间应用功能

时间:2014-10-27 21:04:10

标签: php wordpress

我有这个功能来隐藏基于类别slug的woocommerce类别。见这里:

/* Exclude Category from Shop*/

add_filter( 'get_terms', 'get_subcategory_terms', 10, 3 );

function get_subcategory_terms( $terms, $taxonomies, $args ) {

  $new_terms = array();

  // if a product category and on the shop page
  if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() ) {

    foreach ( $terms as $key => $term ) {

      if ( ! in_array( $term->slug, array( 'suviche' ) ) ) {
        $new_terms[] = $term;
      }

    }

    $terms = $new_terms;
  }

  return $terms;
}

如果时间在标记的框架内(上午9点到下午5点),我还有其他代码来应用规则

<?php
$hr = date("H"); //get the hour in terms of double digits
$min= date("i"); //get the minutes in terms of double digits
$t = ($hr*60)+$min; //convert the current time into minutes
$f = (60*9); //calculate 9:00AM in minutes
$s = (60*17); //calculate 5:00PM in minutes

if(($t>f || $t<s)) //if the current time is between 9:00am to 5:00pm then don't apply function
{
//DO NOTHIGN
}
else //otherwise show execute function
{
//EXECUTE FUNCTION
}
?>

我想要做的是运行过滤器以隐藏产品类别,如果超出时间(早上9点 - 下午5点)

任何想法都会很棒!

到目前为止,我有这个,但没有:

/* Exclude Category from Shop*/

add_filter( 'get_terms', 'get_subcategory_terms', 10, 3 );

function get_subcategory_terms( $terms, $taxonomies, $args ) {

	$new_terms = array();
	$hr = date("H"); //get the hour in terms of double digits
	$min= date("i"); //get the minutes in terms of double digits
	$t = ($hr*60)+$min; //convert the current time into minutes
	$f = (60*9); //calculate 9:00AM in minutes
	$s = (60*17); //calculate 5:00PM in minutes

  // if a product category and on the shop page
  if ( ( $t>f || $t<s) && in_array( 'product_cat', $taxonomies ) && ! is_admin() ) {

    foreach ( $terms as $key => $term ) {

      if ( ! in_array( $term->slug, array( 'suviche' ) ) ) {
        $new_terms[] = $term;
      }

    }

    $terms = $new_terms;
  }

  return $terms;
}

再次感谢任何可能提供帮助的人!

1 个答案:

答案 0 :(得分:0)

嗨,问题是你今天早上9点都没有。您将在1970年1月1日上午9点到达。另外,我不建议使用分钟。使用秒钟。

每当你在PHP中使用时间时,要知道使用unix时间戳通常是有益的。 unix时间戳是自1970年1月1日以来经过的秒数的运行计数。

可以找到一个方便的转换器here

试试这个。

$curTime    = strtotime("now"); //get the current time
$finishTime = strtotime('9am '.date('d-m-Y')); //calculate 9:00AM in seconds
$startTime  = strtotime('5pm '.date('d-m-Y')); //calculate 5:00PM in seconds

if(!($curTime > $startTime && $curTime < $finishTime)){
    //If we get into here then we're outside of the time range.
}

我们在这里做的是使用strtotime("now")来获取当前时间,并使用date()来获取今天的日期,该日期与您想要的时间(上午9点和早上5点)连接在一起。然后我们使用strtotime将整个事物转换为unix时间戳。然后您可以在以后比较当前时间是大于还是小于。

此外,这些变量需要$

( $t>$f || $t<$s )

希望这有帮助。