From c4b2eb526c5733cc32b0550eb76fd072531e223c Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 17 Feb 2019 17:20:43 +0100 Subject: Creates custom post type and custom taxonomy and renders them correctly. --- angebote/angebote.php | 2 - angebote/inc/functions.php | 82 ++++++++++++++++++++++++++++++++++ angebote/inc/template.php | 107 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 angebote/inc/template.php (limited to 'angebote') diff --git a/angebote/angebote.php b/angebote/angebote.php index 5409b55..06998f3 100644 --- a/angebote/angebote.php +++ b/angebote/angebote.php @@ -7,8 +7,6 @@ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } -require_once __DIR__ . '/inc/functions.php'; - get_header(); $container = get_theme_mod( 'understrap_container_type' ); 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 ); diff --git a/angebote/inc/template.php b/angebote/inc/template.php new file mode 100644 index 0000000..d0bbcc3 --- /dev/null +++ b/angebote/inc/template.php @@ -0,0 +1,107 @@ +name; + } + + $include_post_link = false; + if ( is_archive() || is_search() ) { + $include_post_link = true; + } + if ( is_search() ) { + $css_border_left = " card-border-left"; + } else { + $css_border_left = ""; + } + + $offer = shortcode_atts( array( + 'spirit_type' => $spirit_type, + 'shop' => '', + 'procent' => '', + 'img_url' => '', + 'name' => '', + 'discounted_price' => '', + 'original_price' => '', + 'shipping_costs' => 'Versand ist nie kostenlos', + 'abv' => '', + 'volume' => '', + 'base_price' => '', + 'url' => '', + 'created_at' => '', + 'include_post_link' => $include_post_link, + ), $atts + ); +?> +
+
+
+
+

+ + + +

+
+
+

%

+
+ +
+
+
+

+ +

+
+
+ +

+launch +

+ +

+ +
+

+ Preis: € +
+ Alter Preis: € +
+ Versand: € +

+

+ Alkohol: % +
+ Volumen: Liter +
+ € / Liter +

+
+
+ +
+ +
+
+