尝试在CPT上显示“行业中的XX年”文本。这个想法是客户端将进入工作人员在自定义字段中开始的年份,并且自动计算将从当前年份中减去#并显示。
基本数学是:当前年份 - 输入的开始年份=显示的年份
这几乎正常......但计算不会发生。短代码有效,但不是计算。我错过了一个过滤器吗?我可能需要2个函数,一个用于短代码,一个用于计算?
function YearsIndustry_shortcode($metadata, $object_id, $meta_key, $single) {
$start_year = get_post_meta( $post_id, 'ptb_start_year' );
$current_year = new DateTime("now");
$displayed_year = date_diff($current_year, $start_year)->y;
$Years = $displayed_year. 'Years in Industry';
return $Years;
}
add_shortcode('YII', 'YearsIndustry_shortcode');
答案 0 :(得分:0)
1)您应该从post_meta中检索年份:get_post_meta( $post_id, 'ptb_start_year', true)
,否则您将获得数组,而不是单个值。
2)要计算差异,您应指定特定日期,而不仅仅是开始年份。如果您希望用户只输入年份,假设它是年初(1月1日),您应该在代码中手动添加日期和月份。
3)在 date_diff 功能中,您应该使用 DateTime 对象作为参数。
总结以上所有内容,您的代码应如下所示:
function YearsIndustry_shortcode($metadata, $object_id, $meta_key, $single) {
$start_year = get_post_meta( $post_id, 'ptb_start_year', true );
$start_date = new DateTime($start_year."-01-01");
$current_date = new DateTime("now");
$displayed_year = date_diff($current_date, $start_date)->y;
$Years = $displayed_year. 'Years in Industry';
return $Years;
}
但是如果你不需要计算精确的差异,你可以通过仅减去年数(不推荐)来找到差异:
function YearsIndustry_shortcode($metadata, $object_id, $meta_key, $single) {
$start_year = get_post_meta( $post_id, 'ptb_start_year', true );
$current_year = date('Y');
$displayed_year = $current_year - $start_year;
$Years = $displayed_year. 'Years in Industry';
return $Years;
}
答案 1 :(得分:0)
搞定了!!
function YearsIndustry_shortcode() {
$start_year = get_post_meta( get_the_ID(), 'ptb_start_year', true );
$current_year = date('Y');
$displayed_year = $current_year - $start_year;
$Years = $displayed_year. ' Years in Industry';
return $Years;
}
add_shortcode('YII', 'YearsIndustry_shortcode');