我有这个功能来隐藏基于类别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;
}
再次感谢任何可能提供帮助的人!
答案 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 )
希望这有帮助。