<?php
/**
 * Custom post type Resources.
 *
 * @link       https://arc-hive.zone
 * @since      1.1.0
 *
 * @package    archive_wpplugin
 * @subpackage archive_wpplugin/includes
 */

/**
 * Custom post type Resources.
 *
 * This class defines all code necessary to run during the plugin's activation.
 *
 * @since      1.1.0
 * @package    archive_wpplugin
 * @subpackage archive_wpplugin/includes
 * @author     Jorge - vitrubio.net <jorge@vitrubio.net>
 */


/**
 * Start custom post types
 * ----------------------------------------------------------------------------
 * https://developer.wordpress.org/plugins/post-types/registering-custom-post-types/
 * https://developer.wordpress.org/reference/functions/register_post_type/
 */

 // Register Custom Post Type
 function archive_wpplugin_init_custom_post_resource() {

 	$labels = array(
 		'name'                => _x( 'All resources', 'Post Type General Name', 'text_domain' ),
 		'singular_name'       => _x( 'Resource', 'Post Type Singular Name', 'text_domain' ),
 		'menu_name'           => __( 'Resources', 'text_domain' ),
 		'parent_item_colon'   => __( 'Parent resources:', 'text_domain' ),
 	  'all_items'           => __( 'All the resources', 'text_domain' ),
 		'view_item'           => __( 'Show the resource', 'text_domain' ),
 		'add_new_item'        => __( 'Add a new resource', 'text_domain' ),
 		'add_new'             => __( 'Add new resources', 'text_domain' ),
 		'edit_item'           => __( 'Edit the resource', 'text_domain' ),
 		'update_item'         => __( 'Save the resource', 'text_domain' ),
 		'search_items'        => __( 'Search the resource', 'text_domain' ),
 		'not_found'           => __( 'We couldn\'t find any resource ', 'text_domain' ),
 		'not_found_in_trash'  => __( 'We couldn\'t find any resource in the bin', 'text_domain' ),
 	);
 	$rewrite = array(
 		'slug'                       => 'resources/%archive_resourcetype%',
 		'with_front'                 => true,
 		'hierarchical'               => true,
 	);
 	$args = array(
 		'label'               => __( 'archive_resource', 'text_domain' ),
 		'description'         => __( 'Resources', 'text_domain' ),
 		'labels'              => $labels,
 		'supports'            => array( 'title', 'editor', 'thumbnail', 'trackbacks', 'revisions', 'custom-fields', 'page-attributes' ),
 		'taxonomies'          => array('category','post_tag','archive_resourcetype'),
 		'hierarchical'        => true,
 		'public'              => true,
 		'show_ui'             => true,
 		'show_in_menu'        => true,
 		'show_in_nav_menus'   => true,
 		'show_in_admin_bar'   => true,
 		'menu_position'       => 15,
 		'menu_icon'           => 'dashicons-book',
 		'can_export'          => true,
 		'has_archive'         => 'resources',
 		'exclude_from_search' => false,
 		'publicly_queryable'  => true,
 		'capability_type'     => 'post',
    'rewrite'             => $rewrite,
 	);
 	register_post_type( 'archive_resource', $args );

 }

 // Hook into the 'init' action
 add_action( 'init', 'archive_wpplugin_init_custom_post_resource', 0 );


/**
 * Start custom taxonomies
 * ----------------------------------------------------------------------------
 * https://developer.wordpress.org/plugins/taxonomies/working-with-custom-taxonomies/
 */

 // Register Custom Taxonomy
 function archive_wpplugin_register_taxonomy_resource() {

 	$labels = array(
 		'name'                       => _x( 'Type of resources', 'Taxonomy General Name', 'text_domain' ),
 		'singular_name'              => _x( 'Type of resource', 'Taxonomy Singular Name', 'text_domain' ),
 		'menu_name'                  => __( 'Type resources', 'text_domain' ),
 		'all_items'                  => __( 'All type resources', 'text_domain' ),
 		'parent_item'                => __( 'Parent type resource', 'text_domain' ),
 		'parent_item_colon'          => __( 'Parent type resource:', 'text_domain' ),
 		'new_item_name'              => __( 'New type resource', 'text_domain' ),
 		'add_new_item'               => __( 'Add New type resource', 'text_domain' ),
 		'edit_item'                  => __( 'Edit type resource', 'text_domain' ),
 		'update_item'                => __( 'Update type of resource', 'text_domain' ),
 		'separate_items_with_commas' => __( 'Separate type resource with commas', 'text_domain' ),
 		'search_items'               => __( 'Search type of resource', 'text_domain' ),
 		'add_or_remove_items'        => __( 'Add or remove type of resource', 'text_domain' ),
 		'choose_from_most_used'      => __( 'Choose from the most used type of resource', 'text_domain' ),
 		'not_found'                  => __( 'Type of resource Not Found', 'text_domain' ),
 	);
   $rewrite = array(
 		'slug'                       => 'resources',
 	);
 	$args = array(
 		'labels'                     => $labels,
 		'hierarchical'               => true,
 		'public'                     => true,
 		'show_ui'                    => true,
 		'show_admin_column'          => true,
 		'show_in_nav_menus'          => true,
 		'show_tagcloud'              => true,
    'rewrite'                    => $rewrite,
 	);
 	// register_taxonomy( 'archive_wpplugin_taxonomy_type_resource', array( 'archive_resource' ), $args );
	register_taxonomy( 'archive_resourcetype', array( 'archive_resource' ) , $args );
 }

 // Hook into the 'init' action
 add_action( 'init', 'archive_wpplugin_register_taxonomy_resource', 0 );

 // changing the permalink
 // http://wordpress.stackexchange.com/questions/108642/permalinks-custom-post-type-custom-taxonomy-post

 function archive_wpplugin_show_permalinks( $post_link, $id = 0 ){
     $post = get_post($id);
     if ( is_object( $post ) && $post->post_type == 'archive_resource' ){
         $terms = wp_get_object_terms( $post->ID, 'archive_resourcetype' );
         if( $terms ){
             return str_replace( '%archive_resourcetype%' , $terms[0]->slug , $post_link );
         }
     }
     return $post_link;
 }
 add_filter( 'post_type_link', 'archive_wpplugin_show_permalinks', 1, 2 );