Intereting Posts

вернуть сохраненные значения метабокса в поля, а затем отобразить на лицевой стороне

У меня есть группа обменных ящиков, которые я наконец сохраняю, но я стараюсь вернуть сохраненные значения в поля ввода, из которых они пришли. поэтому, например, у меня есть мета-поле, называемое текстом ссылки, и если я помещаю «текст ссылки 1» и сохраняю его, но он не отображается в форме.

код, который я использую для этого:

function home_callout_meta_box_cb($post) { global $post; wp_nonce_field('home_callout_nonce', 'home_callout_meta_box_nonce'); $values = get_post_custom($post->ID); for ($i = 1; $i <= 3; $i++) { $imagefield1[$i] = isset($values['imagefields'][$i]['image1']) ? esc_attr($values['imagefields'][$i]['image1'][0]): ''; $imagefield2[$i] = isset($values['imagefields'][$i]['image2']) ? esc_attr($values['imagefields'][$i]['image2'][0]): ''; $linktext[$i] = isset($values['linktext'][$i]) ? esc_attr($values['linktext'][$i][0]): ''; $link[$i] = isset($values['link'][$i]) ? esc_attr($values['link'][$i][0]): ''; echo '<p><strong>Call out box ' . $i .' image 1</strong></p>'; echo '<div>'; echo '<input type="text" id="imagefields[' . $i . '][image1]" name="imagefields[' . $i . '][image1]" class="upload-url image_url" readonly="readonly" value="' . $imagefield1[$i] .'" />'; echo '<input id="st_upload_button" class="st_upload_button button-secondary upload_image" type="button" name="upload_button" value="Upload" />'; echo '</div>'; echo '<p><strong>Call out box ' . $i .' image 2</strong></p>'; echo '<div>'; echo '<input type="text" id="imagefields[' . $i . '][image2]" name="imagefields[' . $i . '][image2]" class="upload-url image_url" readonly="readonly" value="' . $imagefield2[$i] .'" />'; echo '<input id="st_upload_button" class="st_upload_button button-secondary upload_image" type="button" name="upload_button" value="Upload" />'; echo '</div>'; echo '<p><strong>Call out box ' . $i .' link text</strong></p>'; echo '<input type="text" id="linktext[' . $i . ']" name="linktext[' . $i . ']" value="' . $linktext[$i] . '" />'; echo '<p><strong>Call out box ' . $i .' link</strong></p>'; echo '<input type="text" id="link[' . $i . ']" name="link[' . $i . ']" value="' . $link[$i] . '" />'; // var_dump($values['imagefields'][0]); } } function home_callout_save($post_id) { if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if(!isset($_POST['home_callout_meta_box_nonce']) || !wp_verify_nonce($_POST['home_callout_meta_box_nonce'], 'home_callout_nonce')) return; if(!current_user_can('edit_pages')) return; if(isset($_POST['imagefields'])) { update_post_meta($post_id, 'imagefields', $_POST['imagefields']); } if(isset($_POST['linktext'])) { update_post_meta($post_id, 'linktext', $_POST['linktext']); } if(isset($_POST['link'])) { update_post_meta($post_id, 'link', $_POST['link']); } } add_action('save_post', 'home_callout_save'); 

Я знаю, что поля сохраняются, потому что если я делаю var_dump ($ values ​​['linktext']);

это возвращаемый массив:

 array(1) { [0]=> string(75) "a:3:{i:1;s:11:"link text 1";i:2;s:11:"Link 2 text";i:3;s:11:"Link 3 text";}" } 

Я не уверен, как вернуть сохраненные значения в каждое поле.

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

 get_post_meta($post_id, 'linktext'][1]', true); 

Заранее благодарю за любую помощь.

Solutions Collecting From Web of "вернуть сохраненные значения метабокса в поля, а затем отобразить на лицевой стороне"

Вы хотите получить данные из пользовательского типа сообщения, назначить его переменной, а затем эхо-значение в поле при загрузке страницы. Если ничего другого, это сделает ваш код более читабельным (и более простым для устранения неполадок). Хотя это явно не то, что вы делаете, вы видите точный метод работы здесь ( WP Stackexchange Post ).

Вы также можете ознакомиться с обзором метаматериалов Джастина Тадлока в журнале Smashing Magazine, чтобы стать просветляющим.

Наконец, если вы хотите сочетать ярлыки, такая система, как WordPress Alchemy, обеспечивает хорошую библиотеку кода для быстрого прототипирования и исполнения, тогда как что-то вроде Advanced Custom Fields использует больше GUI-подхода.

Итак, я наконец получил значения, появляющиеся в полях. Я не уверен, если я сделаю это красиво. но с удовольствием оценят некоторые комментарии о том, как это сделать лучше.

вот мой код:

 function home_callout_meta_box_cb($object, $post) { global $post; wp_nonce_field('home_callout_nonce', 'home_callout_meta_box_nonce'); $values = get_post_custom($post->ID); for ($i = 1; $i <= 3; $i++) { $imagefield1[$i] = isset($values['imagefields'][$i]['image1']) ? esc_attr($values['imagefields'][$i]['image1'][0]): ''; $imagefield2[$i] = isset($values['imagefields'][$i]['image2']) ? esc_attr($values['imagefields'][$i]['image2'][0]): ''; $linktext[$i] = isset($values['linktext'][$i]) ? esc_attr($values['linktext'][$i][0]): ''; $link[$i] = isset($values['link'][$i]) ? esc_attr($values['link'][$i][0]): ''; $linkText = get_post_meta( $object->ID, 'linktext', true ); $linkUrl = get_post_meta( $object->ID, 'link', true ); $image = get_post_meta( $object->ID, 'imagefields', true ); echo '<p><strong>Call out box ' . $i .' image 1</strong></p>'; echo '<div>'; echo '<input type="text" id="imagefields[' . $i . '][image1]" name="imagefields[' . $i . '][image1]" class="upload-url image_url" readonly="readonly" value="' . $image[$i]['image1'] .'" />'; echo '<input id="st_upload_button" class="st_upload_button button-secondary upload_image" type="button" name="upload_button" value="Upload" />'; echo '</div>'; echo '<p><strong>Call out box ' . $i .' image 2</strong></p>'; echo '<div>'; echo '<input type="text" id="imagefields[' . $i . '][image2]" name="imagefields[' . $i . '][image2]" class="upload-url image_url" readonly="readonly" value="' . $image[$i]['image2'] .'" />'; echo '<input id="st_upload_button" class="st_upload_button button-secondary upload_image" type="button" name="upload_button" value="Upload" />'; echo '</div>'; echo '<p><strong>Call out box ' . $i .' link text</strong></p>'; echo '<input type="text" id="linktext[' . $i . ']" name="linktext[' . $i . ']" value="' . $linkText[$i] . '" />'; echo '<p><strong>Call out box ' . $i .' link</strong></p>'; echo '<input type="text" id="link[' . $i . ']" name="link[' . $i . ']" value="' . $linkUrl[$i] . '" />'; } } 

что я сделал, я создал некоторые переменные, чтобы восстановить метаданные, и он возвратил массив, поэтому я могу использовать $ i для получения правильного и эхо-значения в поле.

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