Удалить пробелы из расширенного настраиваемого поля, если оно пустое - PullRequest
0 голосов
/ 28 августа 2018

Попытка удалить пробел перед, если поле $ middle пусто. Это код, который у меня есть

function show_update_postdata( $value, $post_id, $field ) {

// Get values from POST
$first = $_POST['acf']['field_5b8536ef3839f'];
$middle = $_POST['acf']['field_5b853701383a0'];
$last = $_POST['acf']['field_5b8536e53839e'];
$creds= $_POST['acf']['field_5b853717383a1'];

// Custom post title
$title = $last . ', ' . $first . ' '. $middle .', ' . $creds;
$slug = sanitize_title( $title );
$postdata = array(
  'ID'          => $post_id,
  'post_title'  => $title,
  'post_type'   => 'physicians',
  'post_name'   => $slug
);

wp_update_post( $postdata );
    return $value;
}

add_filter('acf/update_value/name=first_name', 'show_update_postdata', 10, 3);
add_filter('acf/update_value/name=middle_name_initial', 'show_update_postdata', 10, 3);
add_filter('acf/update_value/name=last_name', 'show_update_postdata', 10, 3);
add_filter('acf/update_value/name=credentials', 'show_update_postdata', 10, 3); 

В настоящее время выводом является Doe, John D., MD, если $ middle имеет значение, но если $ middle не имеет значения, я получаю эту Doe, John, MD, но это должен быть Doe, John, MD

Любая помощь будет высоко ценится.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

но если $ middle не имеет значения, я получаю эту Доу, Джон, MD

Просто потому, что $ middle пуст, символ пробела, вставленный перед ним, автоматически не исчезает с ним.

Поэтому проверьте, является ли переменная пустой, и только если нет, вставьте пробел и значение:

$title = $last . ', ' . $first . ( $middle != '' ? ' '.$middle : '' ) .', ' . $creds;
0 голосов
/ 28 августа 2018

Используйте функцию rtrim вместо обрезки для проверки каждой переменной и URL.

$var=rtrim($variable);
$var=ltrim($var);

в противном случае пустой () чек - лучшее решение

if(empty($variable))
0 голосов
/ 28 августа 2018

Вы можете использовать функцию trim(), чтобы ...

Удалять пробелы (или другие символы) с начала и конца строка

if(empty($middle)) $middle = trim($middle);
...