Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Nov 30th, 2012  |  syntax: None  |  size: 5.08 KB  |  views: 38  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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);