WordPress — Показать расчет PHP даты, с коротким кодом

Попытка отобразить текст «XX год в промышленности» на CPT. Идея состоит в том, что клиент будет вводить год, в который сотрудник начал работу, в настраиваемом поле, а автоматический расчет вычтет этот # из текущего года и отобразит.

Основная математика: текущий год — введенный год начала = отображаемый год

Это почти работает … но расчет не происходит. Шорткод работает, но не расчет. Я пропускаю фильтр? Может мне нужны 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

Решение

1) Вы должны извлечь год из post_meta следующим образом: get_post_meta( $post_id, 'ptb_start_year', true)иначе вы получите массив, а не одно значение.
2) Для расчета разницы необходимо указать определенную дату, а не только начальный год. Если вы хотите, чтобы пользователь вводил только год, предполагая, что это начало года (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;
}
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');
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector