<?php
/*
Plugin Name: Shipbuilding Post
Plugin URI: http://александрсоболев.рф/
Description: Плагин реализующий каталог кораблей на сайте
Version: 1.0
Author: Александр Соболев
Author URI: http://vk.com/san_jorich
License: GPL2
*/
/* Copyright 2018 SOBOLEV_ALEKSANDER (email : samigrai@mail.ru) */
function add_shipbuilding_post_type() {
$labels = array(
'name' => 'Корабли', // Склонение судно - коварная вещь :))
'singular_name' => 'Корабли',
'menu_name' => 'Каталог кораблей',
'name_admin_bar' => 'Каталог кораблей',
'archives' => 'Архив',
'attributes' => 'Аттрибуты',
'parent_item_colon' => 'Главный Корабль',
'all_items' => 'Все корабли',
'add_new_item' => 'Доавить новый',
'add_new' => 'Добавить корабль',
'new_item' => 'Новый корабль',
'edit_item' => 'Редактировать корабль',
'update_item' => 'Обновить корабль',
'view_item' => 'Смотреть корабль',
'view_items' => 'Смотреть корабли',
'search_items' => 'Найти',
'not_found' => 'Не найдено',
'not_found_in_trash' => 'В корзине не найдено',
'featured_image' => 'Featured Image',
'set_featured_image' => 'Установить фото корабля',
'remove_featured_image' => 'Удалить фото',
'use_featured_image' => 'Использовать в качестве фото анкеты',
'insert_into_item' => 'Добавить к анкете',
'uploaded_to_this_item' => 'Добавить к этому кораблю',
'items_list' => 'Список кораблей',
'items_list_navigation' => 'Items list navigation',
'filter_items_list' => 'Фильтр кораблей',
);
$rewrite = array(
'slug' => 'shipbuilding',
'with_front' => true,
'pages' => true,
'feeds' => true,
);
$args = array(
'label' => 'Корабли',
'description' => 'Корабли',
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'revisions', 'custom-fields'),
'taxonomies' => array( 'ship_types' ),
'hierarchical' => true,
'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,
'query_var' => 'post_type',
'rewrite' => $rewrite,
'capability_type' => 'page',
);
register_post_type( 'shipbuilding', $args );
}
add_action( 'init', 'add_shipbuilding_post_type', 0 );
// Регистрация типов кораблей (estate_type)
function ship_types_taxonomy() {
$labels = array(
'name' => 'Тип',
'singular_name' => 'Тип корабля',
'menu_name' => 'Тип корабля',
'all_items' => 'Все типы',
'parent_item' => 'Родительский тип',
'parent_item_colon' => 'Parent Item:',
'new_item_name' => 'Название нового типа',
'add_new_item' => 'Добавить тип корабля',
'edit_item' => 'Редактировать тип',
'update_item' => 'Обновить тип',
'view_item' => 'Смотреть тип',
'separate_items_with_commas' => 'Добавление через запятую',
'add_or_remove_items' => 'Добавить или удалить тип',
'choose_from_most_used' => 'Выбрать из наиболее популярных',
'popular_items' => 'Популярные типы кораблей',
'search_items' => 'Найти тип',
'not_found' => 'Тип не найден',
'no_terms' => 'Типов нет.',
'items_list' => 'Список типов кораблей',
'items_list_navigation' => 'Items list navigation',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'show_in_quick_edit' => true,
'meta_box_cb' => false,
);
register_taxonomy( 'ship_type', array( 'shipbuilding' ), $args );
}
add_action( 'init', 'ship_types_taxonomy', 0 );
?>
с помощью чего лучше создать?
И будут ли они отображаться в крошках?
if (window.location.href.indexOf("post.php?post=") > -1 && window.location.href.indexOf("&action=edit") > -1){
var estate_id = location.href.substr(location.href.indexOf('post=')).split('&')[0].split('=')[1];
console.log('id = '+estate_id);
jQuery.ajax({
type:"POST",
url: ajaxurl,
dataType: 'json',
data: { action: "get_estate_object_data", estate_id: estate_id},
beforeSend: function(){console.log('Отправляем');},
success: function(estate_object_data) {
console.log(estate_object_data);
jQuery.each( estate_object_data, function( index, Value ) {
jQuery('input:text ' + '[needed=true],' + '#'+index).val(Value);
jQuery('select ' + '[needed=true],' + '#'+index).val(Value).attr('selected','selected');
if(Value=="true"){
jQuery('input:checkbox ' + '[needed=true],' + '#'+index).attr("checked", "checked");console.log(index);
}
//jQuery('button ' + '[needed=true],'+ '#'+index).attr('aria-pressed', Value);
});
//$('input, select, textarea, ' + 'a[data-toggle="foo"], p[target="bar"],' + '#hello')
} // success function
});
}
estate_service-fridge:"true"
estate_service-internet:"false"
estate_service-tv:"true"
estate_service-washing_machine:"false"
estate_sevice-phone:"false"
<div class="form-check form-check-inline"><label class="form-check-label" for="estate_loggia"><input class="form-check-input" type="checkbox" needed="true" id="estate_loggia" value="Лоджия"> Лоджия</label></div>
jQuery('#add_new_estate_object').on('click', function(){
estate_data= [];
jQuery('input[needed="true"]').each(function(){
var id = jQuery(this).attr('id'); var type = jQuery(this).attr('type'); var val = jQuery(this).val();
if(type == 'checkbox'){ if( jQuery(this).attr("checked") == 'checked'){ estate_data[id] = "true" } else { estate_data[id] = "false" } }
if(type == 'text'){ estate_data[id] = val; }
});
jQuery('select[needed="true"]').each(function(){
var id = jQuery(this).attr('id');
estate_data[id] = jQuery(this).find('option:selected').val();
});
jQuery('textarea[needed="true"]').each(function(){
estate_data[jQuery(this).attr("id")] = jQuery(this).val() ;
});
/*jQuery('button[needed="true"]').each(function(){
// Собрать данные с кнопкок
});*/
});
1 ) В основном цикле вывода записей\страниц добавьте функцию сбора данных произвольных полей, например get_post_custom(), или get_post_meta( $post_id /* обязательный параметр */ ). Циклом foreach $array as $key->$value по полученному массиву выводите данные в виде Лэйбл - Значение.
2) Тоже самое чарез AJAX. Подключаете скрипт c post запросом и id записи. В success выводите циклом JSON массив ключ-значение, с добавлением строки "налету".
Второй вариант чуть сложнее но красивее. Вы не грузите основной цикл тогда, когда это не нужно