Пользовательское поле WordPress не может обрабатывать одинарные кавычки

#wordpress #custom-fields

#wordpress #пользовательские поля

Вопрос:

Я создаю пользовательское сообщение, в котором есть несколько пользовательских полей. Когда значение, введенное для пользовательских полей, содержит одинарную кавычку, все после нее отсекается. Есть ли фильтр, который я могу использовать для экранирования кавычек, чтобы они считывались как часть строки?

У меня много пользовательских полей, но здесь в качестве примера кода, который я использую.

 // prefix of meta keys, optional
// use underscore (_) at the beginning to make keys hidden, for example $prefix =     '_rw_';
// you also can make prefix empty to disable it
$prefix = 'rw_';
$meta_boxes = array();
// first meta box
$meta_boxes[] = array(
'id' => 'entry_data',                           // meta box     id, unique per meta box
'title' => 'Entry Data',            // meta box title
'pages' => array('dictionary_entry'),   // post types, accept custom post types as     well, default is array('post'); optional
'context' => 'normal',                      // where the meta box appear: normal (default), advanced, side; optional
'priority' => 'high',                       // order of meta box: high (default), low; optional
'fields' => array(                          // list of meta fields
    array(
        'name' => 'Definition 1',                   // field name
        'desc' => 'What does this mean?',   // field description, optional
        'id' => $prefix . 'definition1',                // field id, i.e. the meta key
        'type' => 'text',                       // text box
        'std' => '',                    // default value, optional
        'validate_func' => 'check_name'         // validate function, created below, inside RW_Meta_Box_Validate class
    ),
    array(
        'name' => 'Example 1',                  // field name
        'desc' => 'Use it in a sentence?',  // field description, optional
        'id' => $prefix . 'example1',               // field id, i.e. the meta key
        'type' => 'text',                       // text box
        'std' => '',                    // default value, optional
        'validate_func' => 'check_name'         // validate function, created below, inside RW_Meta_Box_Validate class
    ),
)
);
  

Ответ №1:

Вы пробовали использовать htmlentities($value, ENT_QUOTES) значение, считываемое из текстового поля?

Комментарии:

1. Это то, что я хотел бы сделать, но я не уверен, где это сделать. Мне нужно, чтобы эта функция применялась к введенному тексту (по мере его сохранения), потому что одинарные кавычки отсекают остальную часть строки.

2. поэтому вы, вероятно, захотите использовать в другом или другом месте, где вы читаете значение текстового поля и хотите что-то с ним сделать. htmlentities 'validate_func'

3. Это устранило проблему для меня. Запустите его для данных поля перед сохранением во время save_post перехвата, и оно будет возвращаться, как и должно быть каждый раз.