summaryrefslogtreecommitdiff
path: root/angebote/inc/functions.php
diff options
context:
space:
mode:
authorMax2019-02-17 17:20:43 +0100
committerMax2019-02-17 17:20:43 +0100
commitc4b2eb526c5733cc32b0550eb76fd072531e223c (patch)
tree9e3355627357ca392ae26574c81181bf33bd028e /angebote/inc/functions.php
parent43a8c0fe50529a6b4161d12f087925c06ce37574 (diff)
downloadfuselkoenig_de-c4b2eb526c5733cc32b0550eb76fd072531e223c.tar.gz
Creates custom post type and custom taxonomy and renders them correctly.
Diffstat (limited to 'angebote/inc/functions.php')
-rw-r--r--angebote/inc/functions.php82
1 files changed, 82 insertions, 0 deletions
diff --git a/angebote/inc/functions.php b/angebote/inc/functions.php
index de9a03d..42dab03 100644
--- a/angebote/inc/functions.php
+++ b/angebote/inc/functions.php
@@ -41,3 +41,85 @@ function create_offer_link() {
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 );