summaryrefslogtreecommitdiff
path: root/angebote/inc/functions.php
blob: 42dab03f2d2f8e70d17f0365df1c158a3cdc6070 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php

if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly.
}

function create_offer_link() {
        global $wp;

        // get current url with query string.
        $current_url =  home_url( $wp->request );
        $page =  str_replace("https://www.fuselkoenig.de/angebote/whisky/", "", $current_url);

	/*
	 * sanitization of query variable
	 */
	$sort = get_query_var('_sort', 1);
	switch ( $sort ) {
	case("price"):
	case("name"):
	case("shop"):
	case("procent"):
	case("time"):
		break;
	default:
		$sort = "";
		break;
	}

	/*
	 * sanitization of query variable
	 */
	$order = get_query_var('_order', 1);
	switch ( $order) {
	case("asc"):
	case("desc"):
		break;
	default:
		$order = "";
	}

	return "https://angebote.fuselkoenig.de/wp/whisky?page=" . $page . "&_sort=" . $sort . "&_order=" . $order;
}

function create_offer_post_type() {
	register_post_type(
		'angebote',
		array(
			'labels' => array(
				'name' => __('Angebote'),
				'singular_name' => __('Angebot')
			),
			'public' => true,
			'has_archive' => true,
			'hierarchical' => false,
			'taxonomies' => array( 'type' ),
			'supports' => array(
				'title',
				'editor',
				'thumbnail',
				'comments'
			),
			'rewrite' => array(
				#'slug' => 'aangebote/%custom-taxonomy-name%',
				'slug' => 'angebote/%type%',
				'with_front' => true,
			)
		)
	);
	// create a new taxonomy
	register_taxonomy(
		'type',
		'angebote',
		array(
			'label' => __( 'Type' ),
			'hierarchical' => false,
			'rewrite' => array(
				'slug' => 'angebote',
				'with_front' => true
			)
		)
	);
}

function generate_taxonomy_rewrite_rules( $wp_rewrite ) {
  $rules = array();
  $post_types = get_post_types( array( 'name' => 'angebote', 'public' => true, '_builtin' => false ), 'objects' );
  $taxonomies = get_taxonomies( array( 'name' => 'type', 'public' => true, '_builtin' => false ), 'objects' );

  foreach ( $post_types as $post_type ) {
    $post_type_name = $post_type->name; // 'developer'
    $post_type_slug = $post_type->rewrite['slug']; // 'developers'

    foreach ( $taxonomies as $taxonomy ) {
      if ( $taxonomy->object_type[0] == $post_type_name ) {
        $terms = get_categories( array( 'type' => $post_type_name, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0 ) );
        foreach ( $terms as $term ) {
          $rules[$post_type_slug . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
        }
      }
    }
  }
  $wp_rewrite->rules = $rules + $wp_rewrite->rules;
}

function post_link_includes_taxonomy( $post_link, $id = 0 ){
	$post = get_post($id);  
	if ( is_object( $post ) ){
		$terms = wp_get_object_terms( $post->ID, 'type' );
		file_put_contents("/tmp/wp.debug", json_encode($terms));
		if( $terms ){
		#	file_put_contents("/tmp/wp.debug", str_replace( 'angebote/' , 'angebote/' . $terms[0]->slug , $post_link ));
		#	return $post_link;  
		#	return str_replace( '/angebote/' , '/angebote/' . $terms[0]->slug . '/', $post_link );
			return str_replace( '%type%' , $terms[0]->slug, $post_link );
		} else {
			return str_replace( '%type%' , '', $post_link );
		}
	}
	return $post_link;  
}

add_action('init', 'create_offer_post_type');
add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules');
add_filter( 'post_type_link', 'post_link_includes_taxonomy', 1, 3 );