Ваша функция говорит:
function compare_update( $post_id ) {
И все же вы не называете это никаким аргументом, например:
compare_update('100'); // Or some number/id/whatnot,
// more than likely a $_POST['id']
// or $_GET['id'] variable
Когда вы создаете функцию в PHP с аргументами, и вы не задаете значение по умолчанию в списке аргументов, вы должны предоставить соответствующую переменную в вызове функции для каждого аргумента, который требует ввода.
// $post_id is an argument
function compare_update( $post_id ) {
... your code ...
}
Итак, вы создали функцию, которая требует, чтобы в вызове функции передавался один параметр, который затем можно использовать по этой метке внутри функции.
$post_id = $_POST['id'];
compare_update($post_id); // This is passing a parameter
Например, вы используете его ближе к концу функции:
//Check if values exist and then update
if($end):
update_post_meta( $post_id, '_date_end', $end);
else:
if($start)update_post_meta( $post_id, '_date_end', $start);
endif;
if($start)update_post_meta( $post_id, '_date_start', $start);
if($compare)update_post_meta( $post_id, '_date_compare', $compare);
if($echo): echo $compare; else: return $compare; endif;
Кроме того, форматирование вашего кода сбивает с толку. Например, код непосредственно выше может быть:
//Check if values exist and then update
if ($end) {
update_post_meta( $post_id, '_date_end', $end);
} else {
if ($start) {
update_post_meta( $post_id, '_date_end', $start);
}
}
if ($start) {
update_post_meta( $post_id, '_date_start', $start);
}
if ($compare) {
update_post_meta( $post_id, '_date_compare', $compare);
}
if ($echo) {
echo $compare;
} else {
return $compare;
}