php лучший способ вернуть пустое значение - PullRequest
0 голосов
/ 09 декабря 2018

Я заполняю WordPress таблицу HTML с помощью WordPress ACF-плагин и эту функцию: (я думаю, что это общий вопрос PHP )

add_shortcode('custom_acf',custom_acf_callback);
function custom_acf_callback ($atts = '')
  {
  $value = shortcode_atts( array(
    'my_field' => '',
   ), $atts );
 //the main part starts from here:
   if ($custom_acf_value){

        return $custom_acf_value;
    }
    else {
//and the problem is here:
        return '';
    }

и я скрываю пустые ячейки таблицы, используя хитрый код CSS:

td:empty {
display: none;
}

Проблема состоит в том, что пустые ячейки не будут скрыты, поскольку ячейки таблицы имеютзначение по умолчанию, которое является моим шорткодом, я попытался использовать:

return NULL;

, а также просто с помощью «return», но они не возвращаются пустыми в ячейках таблицы. Обратите внимание, что css провереноотдельно и работает без проблем, Как я могу вернуть реальное пустое значение?

Ответы [ 3 ]

0 голосов
/ 09 декабря 2018

Полагаю, вам нужно проверить возвращаемое значение, прежде чем использовать метод add_shortcode:

$value = custom_acf_callback();

if($value){
    add_shortcode('custom_acf', $value);
} else {
    add_shortcode(); // not sure what this method does and if you need it to generate empty cells?
}
0 голосов
/ 12 декабря 2018

после нескольких дней поиска внезапно обнаружил, что в пустых ячейках есть нежелательный <br>, и я не знаю, почему.
После этого я проверил этот код, чтобы предотвратить <br> в ячейках таблицы, код теперь выглядит примерно так, но не совсем и работает хорошо:

$my_empty = "";
$my_nobr = strip_tags($my_empty, '<p><a>');
return $my_nobr;

Я думаю, причина в WordPress функциях, но я сделалне углубляйся и не было нужды, этот код решил мою проблему.

0 голосов
/ 09 декабря 2018
add_shortcode('custom_acf',custom_acf_callback);

function custom_acf_callback ($atts = '')
{
  $value = shortcode_atts( array(
    'my_field' => '',
  ), $atts );

  // the main part starts from here:
  if ($custom_acf_value) {
    return $custom_acf_value;
  }
}
...