Advertisement
Guest User

Untitled

a guest
Nov 30th, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. add_action( 'init', 'add_property_and_location' );
  2.  
  3. function add_property_and_location() {
  4.  
  5. // register custom post type property
  6.  
  7. $labels = array(
  8. 'name' => _x('Properties', 'post type general name'),
  9. 'singular_name' => _x('Property', 'post type singular name'),
  10. 'add_new' => _x('Add New', 'book'),
  11. 'add_new_item' => __('Add New Property'),
  12. 'edit_item' => __('Edit Property'),
  13. 'new_item' => __('New Property'),
  14. 'all_items' => __('All Properties'),
  15. 'view_item' => __('View Property'),
  16. 'search_items' => __('Search Properties'),
  17. 'not_found' => __('No properties found'),
  18. 'not_found_in_trash' => __('No properties found in Trash'),
  19. 'parent_item_colon' => '',
  20. 'menu_name' => 'Properties'
  21.  
  22. );
  23. $args = array(
  24. 'labels' => $labels,
  25. 'public' => true,
  26. 'publicly_queryable' => true,
  27. 'show_ui' => true,
  28. 'show_in_menu' => true,
  29. 'query_var' => true,
  30. 'rewrite' => true,
  31. 'has_archive' => true,
  32. 'hierarchical' => true,
  33. 'menu_position' => null,
  34. 'supports' => array( 'custom-fields', 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments','page-attributes' ),
  35. );
  36.  
  37. register_post_type('property',$args);
  38.  
  39. // register custom taxonomy location
  40.  
  41. $labels = array(
  42. 'name' => _x( 'Locations', 'taxonomy general name' ),
  43. 'singular_name' => _x( 'Location', 'taxonomy singular name' ),
  44. 'search_items' => __( 'Search location' ),
  45. 'all_items' => __( 'All locations' ),
  46. 'parent_item' => __( 'Parent location' ),
  47. 'parent_item_colon' => __( 'Parent Location:' ),
  48. 'edit_item' => __( 'Edit Location' ),
  49. 'update_item' => __( 'Update location' ),
  50. 'add_new_item' => __( 'Add New location' ),
  51. 'new_item_name' => __( 'New location Name' ),
  52. 'menu_name' => __( 'location' ),
  53. );
  54.  
  55. register_taxonomy('location',array('property'), array(
  56. 'public' => true,
  57. 'labels' => $labels,
  58. 'show_ui' => true,
  59. 'query_var' => true,
  60. 'hierarchical' => true,
  61. 'rewrite' => array('hierarchical' => true, 'slug' => 'properties' )
  62. ));
  63. }
  64.  
  65. if(!class_exists('Refactord_add_rewrite_rules')):
  66. class Refactord_add_rewrite_rules {
  67.  
  68. var $query_vars = array();
  69. var $rules = array();
  70. var $show_rules = false; //used for debugging rewrite rules
  71. var $show_query_vars = false; //used for debugging query vars
  72.  
  73. function __construct($options = NULL){
  74. if(!is_null($options)){
  75. $this->init($options);
  76. }
  77. }
  78.  
  79. function init($options){
  80. foreach($options as $key => $value){
  81. $this->$key = $value;
  82. }
  83.  
  84. if(!empty($this->rules)){
  85. add_action('wp_head', array(&$this, 'flush_rules'));
  86. add_action('generate_rewrite_rules', array(&$this, 'add_rules'));
  87. }
  88.  
  89. if(!empty($this->query_vars)){
  90. add_filter('query_vars', array(&$this, 'add_query_vars'));
  91. }
  92.  
  93. if($this->show_rules){
  94. add_action('wp_footer', array(&$this, 'show_rules'), 1);
  95. }
  96.  
  97. if($this->show_query_vars){
  98. add_action('wp_footer', array(&$this, 'show_query_vars'), 1);
  99. }
  100. }
  101.  
  102. function add_query_vars($query_vars){
  103. foreach($this->query_vars as $var){
  104. $query_vars[] = $var;
  105. }
  106. return $query_vars;
  107. }
  108.  
  109. function add_rules(){
  110. global $wp_rewrite;
  111. $wp_rewrite->rules = $this->rules + $wp_rewrite->rules;
  112. }
  113.  
  114. function rules_exist(){
  115. global $wp_rewrite;
  116.  
  117. foreach($this->rules as $key => $rule){
  118. if(!in_array($rule, $wp_rewrite->rules) || !key_exists($key, $wp_rewrite->rules)){
  119. return FALSE;
  120. }
  121. }
  122. return TRUE;
  123. }
  124.  
  125. function flush_rules(){
  126. global $wp_rewrite;
  127. if(!$this->rules_exist()){
  128. $wp_rewrite->flush_rules();
  129. }
  130. }
  131.  
  132. function show_rules(){
  133. global $wp_rewrite;
  134.  
  135. echo "<pre>";
  136. print_r($wp_rewrite->rules);
  137. echo "</pre>";
  138. }
  139.  
  140. function show_query_vars(){
  141. global $wp_query;
  142.  
  143. echo "<pre>";
  144. print_r($wp_query->query_vars);
  145. echo "</pre>";
  146. }
  147. }
  148. endif;
  149.  
  150.  
  151.  
  152. $options = array(
  153. 'rules' => array(
  154. 'properties/(.+?)/(for-sale)/page/?([0-9]{1,})/?$' => 'index.php?location=$matches[1]&type=$matches[2]&paged=$matches[3]',
  155. 'properties/(.+?)/(for-sale)/?$' => 'index.php?location=$matches[1]&type=$matches[2]',
  156. 'properties/(.+?)/(for-rent)/page/?([0-9]{1,})/?$' => 'index.php?location=$matches[1]&type=$matches[2]&paged=$matches[3]',
  157. 'properties/(.+?)/(for-rent)/?$' => 'index.php?location=$matches[1]&type=$matches[2]'
  158. ),
  159. 'query_vars' => array('type')
  160. );
  161. $add_rewrite_rules = new Refactord_add_rewrite_rules($options);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement