• Здравствуйте, в моей теме используется новый тип записи. Мне нужно, чтобы в этом месте можно было вставить шорт код. Может кто подсказать, какие функции и где нужно установить? Как я понял нужно прописывать функции в functions.php и single-reviews.php, а так же прописать стили в style.css.

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Мне нужно, чтобы в этом месте можно было вставить шорт код.

    По скриншоту совершенно не понятно, где именно нужно вставить шорткод.

    Шорткод нужно вставить под миниатюрой записи.

    Вроде разобрался, поставил функцию. После добавление кнопки, типа <span class="button green"><a href="#" rel="nofollow">Начать играть</a></span>, в редактировании записи выходит такая бредня. Кнопка работает, как убрать эту бредню в редактировании записи?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Кнопка работает, как убрать эту бредню в редактировании записи?

    Использовать функцию esc_attr() в поле для редактирования.

    Эту функцию нужно в исходнике прописать? В поле для редактирования писал так esc_attr(<span class="button green"><a href="" target="_blank" rel="nofollow" >Начать играть</a></span>) Отображалась функция, а в скобках кнопка.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Эту функцию нужно в исходнике прописать?

    В коде, который выводит поля <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> поля?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    В функциях темы у меня стоит

    Куда передаётся этот массив? Приведите функцию полностью.

    //////////////////////////////////////////////////////////////////
    // 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>

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Изменения нужно внести в функцию 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>';
    }

    Спасибо огромное за помощь!

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Тема «Новый тип записи» закрыта для новых ответов.