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
|
<?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/',
'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 ){
return str_replace( 'angebote/' , 'angebote/' . $terms[0]->slug, $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 );
|