Новый тип записи
-
Здравствуйте, в моей теме используется новый тип записи. Мне нужно, чтобы в этом месте можно было вставить шорт код. Может кто подсказать, какие функции и где нужно установить? Как я понял нужно прописывать функции в functions.php и single-reviews.php, а так же прописать стили в style.css.
-
Мне нужно, чтобы в этом месте можно было вставить шорт код.
По скриншоту совершенно не понятно, где именно нужно вставить шорткод.
Шорткод нужно вставить под миниатюрой записи.
Вроде разобрался, поставил функцию. После добавление кнопки, типа
<span class="button green"><a href="#" rel="nofollow">Начать играть</a></span>
, в редактировании записи выходит такая бредня. Кнопка работает, как убрать эту бредню в редактировании записи?Кнопка работает, как убрать эту бредню в редактировании записи?
Использовать функцию esc_attr() в поле для редактирования.
Эту функцию нужно в исходнике прописать? В поле для редактирования писал так
esc_attr(<span class="button green"><a href="" target="_blank" rel="nofollow" >Начать играть</a></span>)
Отображалась функция, а в скобках кнопка.Эту функцию нужно в исходнике прописать?
В коде, который выводит поля
<input>
в форме на вашем скриншоте.В функциях темы у меня стоит
array( 'name' => 'Кнопка', 'desc' => 'Ссылка на игру', 'id' => $prefix . 'button', 'type' => 'text', 'std' => '' )
В одиночной записи
<div class="review-thumb"><?php the_post_thumbnail('review-thumb-big'); ?><?php if(get_post_meta($post->ID, "leetpress_button", true)) { ?><div class="button-play-single"><p><?php echo get_post_meta($post->ID, "leetpress_button", true); ?></p></div><?php } ?></div>
тут картинка и кнопка.Не могу с утра разобраться.
Так и не смог разобраться. Не могли бы вы уточнить где этот код, который выводит <input> поля?
В функциях темы у меня стоит
Куда передаётся этот массив? Приведите функцию полностью.
////////////////////////////////////////////////////////////////// // Register custom meta box for reviews ////////////////////////////////////////////////////////////////// $prefix = 'leetpress_'; $meta_box = array( 'id' => 'rating-meta-box', 'title' => 'Информация игры', 'page' => 'reviews', 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'name' => 'Миниатюра игры', 'desc' => 'Только вставить эскиз вашей игры здесь, если вы показываете игры на главной странице (миниатюра должна быть не менее 600x300px).', 'id' => $prefix . 'review_thumb', 'type' => 'text', 'std' => '' ), array( 'name' => 'Общий балл', 'desc' => 'Выберите число от 1-10 (напр. 9.7)', 'id' => $prefix . 'overallscore', 'type' => 'text', 'std' => '' ), array( 'name' => 'Критерия 1', 'desc' => 'Введите критерию (напр. Графика)', 'id' => $prefix . 'criteria1', 'type' => 'text', 'std' => '' ), array( 'name' => 'Рейтинг критерии', 'id' => $prefix . 'crit1_rating', 'type' => 'select', 'options' => array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10') ), array( 'name' => 'Критерия 2', 'desc' => 'Введите критерию (напр. Звук)', 'id' => $prefix . 'criteria2', 'type' => 'text', 'std' => '' ), array( 'name' => 'Рейтинг критерии', 'id' => $prefix . 'crit2_rating', 'type' => 'select', 'options' => array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10') ), array( 'name' => 'Критерия 3', 'desc' => 'Введите критерию (напр. Геймплей)', 'id' => $prefix . 'criteria3', 'type' => 'text', 'std' => '' ), array( 'name' => 'Рейтинг критерии', 'id' => $prefix . 'crit3_rating', 'type' => 'select', 'options' => array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10') ), array( 'name' => 'Плюсы игры', 'desc' => 'Введите плюсы игры и разделите их "|". (напр. Великая история | Выдающийся саундтрек)', 'id' => $prefix . 'good', 'type' => 'text', 'std' => '' ), array( 'name' => 'Минусы игры', 'desc' => 'Введите минусы игры и разделите их "|". (напр. Багги Мультиплеера | Очень короткая кампания)', 'id' => $prefix . 'bad', 'type' => 'text', 'std' => '' ), array( 'name' => 'Кнопка', 'desc' => 'Ссылка на игру', 'id' => $prefix . 'button', 'type' => 'text', 'std' => '' ) ) ); add_action('admin_menu', 'mytheme_add_box'); // Add meta box function mytheme_add_box() { global $meta_box; add_meta_box($meta_box['id'], $meta_box['title'], 'mytheme_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']); } // Callback function to show fields in meta box function mytheme_show_box() { global $meta_box, $post; // Use nonce for verification echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; echo '<table class="form-table">'; foreach ($meta_box['fields'] as $field) { // get current post meta data $meta = get_post_meta($post->ID, $field['id'], true); echo '<tr>', '<th style="width:20%"><label for="', $field['id'], '"><strong>', $field['name'], ':</strong></label></th>', '<td>'; switch ($field['type']) { case 'text': echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" />', '<br /><small>', $field['desc'],'</small>'; break; case 'textarea': echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>', '<br />', $field['desc']; break; case 'select': echo '<select name="', $field['id'], '" id="', $field['id'], '">'; foreach ($field['options'] as $option) { echo '<option', $meta == $option ? ' selected="selected"' : '', '>', $option, '</option>'; } echo '</select>'; break; case 'radio': foreach ($field['options'] as $option) { echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name']; } break; case 'checkbox': echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />'; break; } echo '<td>', '</tr>'; } echo '</table>'; } add_action('save_post', 'mytheme_save_data'); // Save data from meta box function mytheme_save_data($post_id) { global $meta_box; // verify nonce if (!wp_verify_nonce($_POST['mytheme_meta_box_nonce'], basename(__FILE__))) { return $post_id; } // check autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post_id; } // check permissions if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) { return $post_id; } } elseif (!current_user_can('edit_post', $post_id)) { return $post_id; } foreach ($meta_box['fields'] as $field) { $old = get_post_meta($post_id, $field['id'], true); $new = $_POST[$field['id']]; if ($new && $new != $old) { update_post_meta($post_id, $field['id'], $new); } elseif ('' == $new && $old) { delete_post_meta($post_id, $field['id'], $old); } } }
Это в functions.php
Я то, что вы просили написал?
Часть кода в одиночной записи
<div class="review-thumb"><?php the_post_thumbnail('review-thumb-big'); ?><?php if(get_post_meta($post->ID, "leetpress_button", true)) { ?><div class="button-play-single"><?php echo get_post_meta($post->ID, "leetpress_button", true); ?></div><?php } ?></div>
Изменения нужно внести в функцию
mytheme_show_box()
.Исправленная функция:
function mytheme_show_box() { global $meta_box, $post; // Use nonce for verification echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; echo '<table class="form-table">'; foreach ($meta_box['fields'] as $field) { // get current post meta data $meta = get_post_meta($post->ID, $field['id'], true); echo '<tr>', '<th style="width:20%"><label for="', $field['id'], '"><strong>', $field['name'], ':</strong></label></th>', '<td>'; switch ($field['type']) { case 'text': echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', esc_attr( $meta ? $meta : $field['std'] ), '" size="30" style="width:97%" />', '<br /><small>', $field['desc'],'</small>'; break; case 'textarea': echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', esc_textarea( $meta ? $meta : $field['std'] ), '</textarea>', '<br />', $field['desc']; break; case 'select': echo '<select name="', $field['id'], '" id="', $field['id'], '">'; foreach ($field['options'] as $option) { echo '<option', $meta == $option ? ' selected="selected"' : '', '>', esc_html( $option ), '</option>'; } echo '</select>'; break; case 'radio': foreach ($field['options'] as $option) { echo '<input type="radio" name="', $field['id'], '" value="', esc_attr( $option['value'] ), '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name']; } break; case 'checkbox': echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />'; break; } echo '<td>', '</tr>'; } echo '</table>'; }
Спасибо огромное за помощь!
- Тема «Новый тип записи» закрыта для новых ответов.