<div class="prodimg" style="background-image: url('.wp_get_attachment_image_url ( $image_id, 'thumbnail' ).')"></div>
onclick="location.href=\'.get_category_link($term_taxonomy_id).\';"
onclick="location.href='.get_category_link($term_taxonomy_id).';"
onclick="location.href=" http:="" www.mysite.ru="" category="" ;"=""
<?php
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php
$mypost = array( 'post_type' => 'testimonials', );
$loop = new WP_Query( $mypost );
?>
<?php while ( $loop->have_posts() ) : $loop->the_post();?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<!-- Display featured image in right-aligned floating div -->
<div style="float: right; margin: 10px">
<?php the_post_thumbnail( array( 100, 100 ) ); ?>
</div>
<!-- Display Title and Author Name -->
<strong>Тип объекта: </strong><?php echo $post->post_title.""; ?><br />
<strong>Количество комнат: </strong>
<?php echo esc_html( get_post_meta( get_the_ID(), 'movie_director', true ) ); ?>
<br />
<!-- Display yellow stars based on rating -->
<strong>Рейтинг: </strong>
<?php
$nb_stars = intval( get_post_meta( get_the_ID(), 'movie_rating', true ) );
for ( $star_counter = 1; $star_counter <= 5; $star_counter++ ) {
if ( $star_counter <= $nb_stars ) {
echo '<img src="' . plugins_url( 'Movie-Reviews/images/icon.png' ) . '" />';
} else {
echo '<img src="' . plugins_url( 'Movie-Reviews/images/grey.png' ). '" />';
}
}
?><br><br>
</header>
</article>
<?php endwhile; ?>
</div>
</div>
<?php wp_reset_query(); ?>
<?php get_footer(); ?>
<?php
// Register Custom Post Type
function custom_post_type_testimonials() {
$labels = array(
'name' => _x( 'Объекты', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Объект', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Объекты', 'text_domain' ),
'name_admin_bar' => __( 'Объекты', 'text_domain' ),
'archives' => __( 'Item Archives', 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'new_item' => __( 'New Item', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'view_item' => __( 'View Item', 'text_domain' ),
'search_items' => __( 'Search Item', 'text_domain' ),
'not_found' => __( 'Not found', 'text_domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),
'featured_image' => __( 'Featured Image', 'text_domain' ),
'set_featured_image' => __( 'Set featured image', 'text_domain' ),
'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
'use_featured_image' => __( 'Use as featured image', 'text_domain' ),
'insert_into_item' => __( 'Insert into item', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter items list', 'text_domain' ),
);
$args = array(
'label' => __( 'Testimonials', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
);
register_post_type( 'testimonials', $args );
}
add_action( 'init', 'custom_post_type_testimonials' );
function testimonials_meta_box() {
add_meta_box(
'testimonials_meta_box', // Идентификатор(id)
'Объекты недвижимости - дополнительная информация', // Заголовок области с мета-полями(title)
'show_my_testimonials_metabox', // Вызов(callback)
'testimonials', // Где будет отображаться наше поле, в нашем случае в разделе Красная Книга
'normal',
'high');
}
add_action('add_meta_boxes', 'testimonials_meta_box'); // Запускаем функцию
$testimonials_meta_fields = array(
array(
'label' => 'Тип объекта',
'desc' => 'Выберите тип объекта',
'id' => 'flatetype',
'type' => 'select',
'options' => array ( // Параметры, всплывающие данные
'one' => array (
'label' => 'Квартира', // Название поля
'value' => 'Квартира' // Значение
),
'two' => array (
'label' => 'Комната', // Название поля
'value' => 'Комната' // Значение
),
'three' => array (
'label' => 'Дом', // Название поля
'value' => 'Дом' // Значение
)
)
),
array(
'label' => 'Количество комнат',
'desc' => 'Выберите количество комнат',
'id' => 'roomsnumber',
'type' => 'select',
'options' => array ( // Параметры, всплывающие данные
'one' => array (
'label' => '1 комната', // Название поля
'value' => '1 комната' // Значение
),
'two' => array (
'label' => '2 комнаты', // Название поля
'value' => '2 комнаты' // Значение
),
'three' => array (
'label' => '3 комнаты', // Название поля
'value' => '3 комнаты' // Значение
),
'four' => array (
'label' => '4+ комнаты', // Название поля
'value' => '4+ комнаты' // Значение
)
)
),
array(
'label' => 'Площадь, м2',
'desc' => '',
'id' => 'ploshad', // даем идентификатор.
'type' => 'text' // Указываем тип поля.
),
array(
'label' => 'Цена в месяц, руб',
'desc' => '',
'id' => 'price', // даем идентификатор.
'type' => 'text' // Указываем тип поля.
),
array(
'label' => 'Этаж',
'desc' => '',
'id' => 'etage', // даем идентификатор.
'type' => 'text' // Указываем тип поля.
),
array (
'label' => 'Удобства',
'desc' => 'Выберите удобства объекта',
'id' => $prefix.'udobstva_group',
'type' => 'udobstva_group',
'options' => array (
'one' => array (
'label' => 'Балкон',
'value' => 'Балкон'
),
'two' => array (
'label' => 'Посудомоечная машина',
'value' => 'Посудомоечная машина'
),
'three' => array (
'label' => 'Холодильник',
'value' => 'Холодильник'
),
'four' => array (
'label' => 'Стиральная машина',
'value' => 'Стиральная машина'
),
'five' => array (
'label' => 'Телевизор',
'value' => 'Телевизор'
),
'six' => array (
'label' => 'Кондиционер',
'value' => 'Кондиционер'
)
)
),
array (
'label' => 'Особенности',
'desc' => 'Выберите особенности объекта',
'id' => $prefix.'osobennosti_group',
'type' => 'osobennosti_group',
'options' => array (
'one' => array (
'label' => 'Можно курить',
'value' => 'Можно курить'
),
'two' => array (
'label' => 'Подходит для мероприятий',
'value' => 'Подходит для мероприятий'
),
'three' => array (
'label' => 'Можно с животными',
'value' => 'Можно с животными'
),
'four' => array (
'label' => 'Подходит для семьи с детьми',
'value' => 'Подходит для семьи с детьми'
)
)
),
array(
'label' => 'Галерея',
'desc' => 'Загрузите нужные изображения',
'id' => 'multiupload',
'type' => 'multiupload'
)
);
function show_my_testimonials_metabox() {
global $testimonials_meta_fields; // Обозначим наш массив с полями глобальным
global $post; // Глобальный $post для получения id создаваемого/редактируемого поста
// Выводим скрытый input, для верификации. Безопасность прежде всего!
echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';
// Начинаем выводить таблицу с полями через цикл
echo '<table class="form-table">';
foreach ($testimonials_meta_fields as $field) {
// Получаем значение если оно есть для этого поля
$meta = get_post_meta($post->ID, $field['id'], true);
// Начинаем выводить таблицу
echo '<tr>
<th><label for="'.$field['id'].'">'.$field['label'].'</label></th>
<td>';
switch($field['type']) {
// Текстовое поле
case 'text':
echo '<input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$meta.'" size="30" />
<br /><span class="description">'.$field['desc'].'</span>';
break;
// Список
case 'select':
echo '<select name="'.$field['id'].'" id="'.$field['id'].'" id="'.$field['id'].'">';
foreach ($field['options'] as $option) {
echo '<option', $meta == $option['value'] ? ' selected="selected"' : '', ' value="'.$option['value'].'">'.$option['label'].'</option>';
}
echo '</select><br /><span class="description">'.$field['desc'].'</span>';
break;
// Чекбоксы
// checkbox_group
case 'udobstva_group':
foreach ($field['options'] as $option) {
echo '<input type="checkbox" value="'.$option['value'].'" name="'.$field['id'].'[]" id="'.$option['value'].'"',$meta && in_array($option['value'], $meta) ? ' checked="checked"' : '',' />
<label for="'.$option['value'].'">'.$option['label'].'</label><br />';
}
echo '<span class="description">'.$field['desc'].'</span>';
break;
case 'osobennosti_group':
foreach ($field['options'] as $option) {
echo '<input type="checkbox" value="'.$option['value'].'" name="'.$field['id'].'[]" id="'.$option['value'].'"',$meta && in_array($option['value'], $meta) ? ' checked="checked"' : '',' />
<label for="'.$option['value'].'">'.$option['label'].'</label><br />';
}
echo '<span class="description">'.$field['desc'].'</span>';
break;
case 'multiupload':
echo '<a class="repeatable-add button" href="#">Добавить поле</a>
<ul id="'.$field['id'].'-repeatable" class="custom_repeatable">';
$i = 0;
if ($meta) {
foreach($meta as $row) {
$image = wp_get_attachment_image_src($row, 'medium'); $image = $image[0];
if(empty($row)) $row = "http://placehold.it/100x100";
echo
'<li style="display: inline-block;margin-right: 20px;position:relative;">
<img style="width:100px;" class="custom_preview_image sort hndle" src="'.$row.'" />
<div style="position: absolute;top:0;">
<input name="'.$field['id'].'['.$i.']" id="'.$field['id'].'" type="hidden" class="custom_upload_image" value="'.$row.'" />
<a style="text-decoration: none;" title="Добавить изображение" class="custom_upload_file_button" href="#"><span class="dashicons dashicons-plus"></span></a>
<a style="text-decoration: none;" title="Удалить изображение" class="repeatable-remove" href="#"><span class="dashicons dashicons-no-alt"></span></a>
</div>
</li>';
$i++;
}
} else {
echo
'<li style="display: inline-block;margin-right: 20px;position:relative;">
<img style="width:100px;" src="http://placehold.it/100x100" class="custom_preview_image sort hndle" alt="" />
<div style="position: absolute;top:0;">
<span class="dashicons dashicons-menu"></span>
<input name="'.$field['id'].'['.$i.']" id="'.$field['id'].'" type="hidden" class="custom_upload_image" value="" />
<a style="text-decoration: none;" title="Добавить изображение" class="custom_upload_file_button" href="#"><span class="dashicons dashicons-plus"></span></a>
<a style="text-decoration: none;" title="Удалить изображение" class="repeatable-remove" href="#"><span class="dashicons dashicons-no-alt"></span></a>
</div>
</li>';
}
echo '</ul>
<span class="description">'.$field['desc'].'</span>';
break;
}
echo '</td></tr>';
}
echo '</table>';
}
function save_my_testimonials_meta_fields($post_id) {
global $testimonials_meta_fields; // Массив с нашими полями
// проверяем наш проверочный код
if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__)))
return $post_id;
// Проверяем авто-сохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
// Проверяем права доступа
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
foreach ($testimonials_meta_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); // Если данных нету, удаляем мету.
}
$image_meta_box = $_POST[$field['id']];
if($field['type'] == 'multiupload')
$image_meta_box = array_values($image_meta_box);
if ($image_meta_box && $image_meta_box != $old) { // Если данные новые
update_post_meta($post_id, $field['id'], $image_meta_box); // Обновляем данные
} elseif ('' == $image_meta_box && $old) {
delete_post_meta($post_id, $field['id'], $old); // Если данных нету, удаляем мету.
}
} // end foreach
}
add_action('save_post', 'save_my_testimonials_meta_fields'); // Запускаем функцию сохранения
?><code lang="php">