Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.02 KB | None | 0 0
  1. <?php
  2.  
  3. namespace City;
  4.  
  5.  
  6. function setup() {
  7.  
  8. add_action( 'init', __NAMESPACE__ . '\store_city' );
  9. add_action( 'add_meta_boxes', __NAMESPACE__ . '\store_meta_city' );
  10. add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\admin_scripts', 11 );
  11. add_action( 'admin_print_scripts', __NAMESPACE__ . '\admin_templates' );
  12.  
  13.  
  14. add_action( 'wp_ajax_index_postmeta', __NAMESPACE__ . '\index_postmeta' );
  15. add_action( 'wp_ajax_update_postmeta', __NAMESPACE__ . '\update_postmeta' );
  16.  
  17. }
  18.  
  19. function store_city() {
  20.  
  21. $labels = array(
  22. 'name' => __( 'Cities', 'WP_LANCASTER' ),
  23. 'singular_name' => __( 'City', 'WP_LANCASTER' ),
  24. 'add_new' => __( 'Add New City', 'WP_LANCASTER' ),
  25. 'add_new_item' => __( 'Add New City', 'WP_LANCASTER' ),
  26. 'new_item' => __( 'New City', 'WP_LANCASTER' ),
  27. 'edit_item' => __( 'Edit City', 'WP_LANCASTER' ),
  28. 'view_item' => __( 'View City', 'WP_LANCASTER' ),
  29. 'all_items' => __( 'All Cities', 'WP_LANCASTER' ),
  30. 'search_items' => __( 'Search Cities', 'WP_LANCASTER' ),
  31. 'not_found' => __( 'No Cities found', 'WP_LANCASTER' ),
  32. 'not_found_in_trash' => __( 'No Cities found in Trash', 'WP_LANCASTER' ),
  33.  
  34. );
  35.  
  36. $args = array(
  37. 'public' => true,
  38. 'publicly_queryable' => true,
  39. 'show_ui' => true,
  40. 'show_in_menu' => true,
  41. 'query_var' => true,
  42. 'label' => __( 'city', 'WP_LANCASTER' ),
  43. 'labels' => $labels,
  44. 'capability_type' => 'post',
  45. 'has_archive' => false
  46. );
  47.  
  48. register_post_type( 'city', $args );
  49.  
  50. }
  51.  
  52. /**
  53. * Create Meta boxes for the City cpt
  54. */
  55. function store_meta_city() {
  56.  
  57. add_meta_box(
  58. 'city_streets',
  59. 'City Streets',
  60. __NAMESPACE__ . '\city_streets_callback',
  61. 'city',
  62. 'normal',
  63. 'default'
  64. );
  65.  
  66. }
  67.  
  68. /**
  69. * Callback func for Meta box
  70. */
  71. function city_streets_callback( $post, $metabox ) {
  72.  
  73. wp_nonce_field( 'index_get', 'city_streets_get_nonce' );
  74.  
  75. ?>
  76. <div id="city_streets_container">
  77. <div id="create_streets">
  78. <p></p>
  79. <input class="widefat" name="create_streets_field" placeholder="Enter New Street" id="create_streets_field">
  80. <p></p>
  81. <button class="button button-primary button-large" id="create_streets_submit">Add New Street</button>
  82. </div>
  83. <ul id="list_streets">
  84. </ul>
  85. </div>
  86. <?php
  87. }
  88.  
  89.  
  90. /**
  91. * Enqueue scripts for back-end.
  92. *
  93. */
  94. function admin_scripts() {
  95.  
  96. $post = get_post();
  97.  
  98. if ( $post && "city" === $post->post_type ) {
  99.  
  100. wp_enqueue_style( 'city-admin', get_template_directory_uri() . "/css/city.css" );
  101.  
  102. wp_enqueue_script(
  103. 'city-admin',
  104. get_template_directory_uri() . "/js/city.js",
  105. array( 'jquery', 'backbone', 'underscore' ),
  106. '0.0.1',
  107. true);
  108.  
  109. wp_localize_script( 'city-admin', 'sbPostObject', get_object_vars( $post ) );
  110.  
  111. }
  112. }
  113.  
  114. /**
  115. * Index of new CPT. This will show posts in a post type
  116. */
  117. function index_postmeta() {
  118.  
  119. $nonce = isset( $_REQUEST['nonce'] ) ? $_REQUEST['nonce'] : '';
  120. $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : false;
  121. $key = isset( $_REQUEST['key'] ) ? esc_html( $_REQUEST['key'] ) : false;
  122.  
  123. if ( ! wp_verify_nonce( $nonce, 'index_get' ) ) {
  124. wp_send_json_error( 'Insecure Request' );
  125. }
  126.  
  127. if ( isset( $id, $key ) && 'city_streets' === $key ) {
  128.  
  129.  
  130. $meta = get_post_meta( $id, $key, true );
  131.  
  132. wp_send_json_success( $meta );
  133.  
  134. } else {
  135. // If the nonce was invalid or data was not complete
  136. wp_send_json_error( 'Not a complete request' );
  137. }
  138.  
  139. }
  140.  
  141. /**
  142. * Update existing Post meta.
  143. */
  144. function update_postmeta() {
  145.  
  146. $nonce = isset( $_REQUEST['nonce'] ) ? $_REQUEST['nonce'] : '';
  147. $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : false;
  148. $key = isset( $_REQUEST['key'] ) ? esc_html( $_REQUEST['key'] ) : false;
  149.  
  150. if ( ! wp_verify_nonce( $nonce, 'index_get' ) ) {
  151. wp_send_json_error( 'Insecure Request' );
  152. }
  153.  
  154. if ( isset( $id, $key ) && 'city_streets' === $key ) {
  155.  
  156. if ( ! isset( $_REQUEST['value'] ) ) {
  157.  
  158. $update = delete_post_meta( $id, $key );
  159.  
  160. } else {
  161.  
  162. $update = update_post_meta( $id, $key, $_REQUEST['value'] );
  163. }
  164.  
  165. wp_send_json_success( $update );
  166.  
  167. } else {
  168. // If the nonce was invalid or data was not complete
  169. wp_send_json_error( 'Not a complete request' );
  170. }
  171.  
  172. }
  173.  
  174. /**
  175. * Display JS templates in admin footer
  176. *
  177. * @since 0.3.0
  178. *
  179. * @return void
  180. *
  181. */
  182. function admin_templates() {
  183.  
  184. ?>
  185. <script type="text/html" id="tmpl-city-streets">
  186. <p class='post'><%= title %></p>
  187. <div class='actions'>
  188. <a href="#" class='edit'>Edit</a><span>|</span>
  189. <a href="#" class='delete'>delete</a>
  190. </div>
  191. </script>
  192.  
  193. <script type="text/html" id="tmpl-city-streets-edit">
  194. <div class="clearfix">
  195. <p class='post'><%= title %></p>
  196. <div class='actions'>
  197. <a href="#" class='cancel'>Cancel</a><span>|</span>
  198. <a href="#" class='delete'>delete</a>
  199. </div>
  200. </div>
  201. <div class="edit-container clearfix">
  202. <input type="text" placeholder="street-name" class="widefat" value="<%= title %>"/>
  203. <div class='actions'>
  204. <a href="#" class="cancel">Cancel</a>
  205. <button class='button update'>Update</button>
  206. </div>
  207. </div>
  208. </script>
  209. <?php
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement