File "taxonomies.php"

Full Path: /home/apmablcosr/www/wp-content/plugins/yoast-test-helper/src/taxonomies.php
File size: 2.78 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Yoast\WP\Test_Helper;

/**
 * Bootstrap for the entire plugin.
 */
class Taxonomies implements Integration {

	/**
	 * Holds our option instance.
	 *
	 * @var Option
	 */
	private $option;

	/**
	 * Class constructor.
	 *
	 * @param Option $option Our option array.
	 */
	public function __construct( Option $option ) {
		$this->option = $option;
	}

	/**
	 * Register the needed hooks.
	 */
	public function add_hooks() {
		if ( $this->option->get( 'enable_post_types' ) === true ) {
			\add_action( 'init', [ $this, 'register_taxonomies' ] );
		}
	}

	/**
	 * Registers our post types.
	 */
	public function register_taxonomies() {
		// Taxonomies for books.
		\register_taxonomy( 'book-category', [ 'book' ], $this->get_category_args( 'yoast-test-book-category' ) );
		\register_taxonomy( 'book-genre', [ 'book' ], $this->get_genre_args( 'yoast-test-book-genre' ) );

		// Taxonomies for movies.
		\register_taxonomy( 'movie-category', [ 'movie' ], $this->get_category_args( 'yoast-test-movie-category' ) );
		\register_taxonomy( 'movie-genre', [ 'movie' ], $this->get_genre_args( 'yoast-test-movie-genre' ) );
	}

	/**
	 * Get arguments to use when registering the category taxonomy.
	 *
	 * @param string $slug The slug to set for the taxonomy.
	 *
	 * @return array Arguments to use when registering the category taxonomy.
	 */
	private function get_category_args( $slug ) {
		return [
			'label'        => \__( 'Categories', 'yoast-test-helper' ),
			'labels'       => [
				'name'          => \__( 'Categories', 'yoast-test-helper' ),
				'singular_name' => \__( 'Category', 'yoast-test-helper' ),
			],
			'rewrite'      => [
				'slug' => $slug,
			],
			'hierarchical' => true,
			'public'       => true,
			'show_in_rest' => true,
		];
	}

	/**
	 * Get arguments to use when registering the genre taxonomy.
	 *
	 * @param string $slug The slug to set for the taxonomy.
	 *
	 * @return array Arguments to use when registering the genre taxonomy.
	 */
	private function get_genre_args( $slug ) {
		return [
			'label'        => \__( 'Genres', 'yoast-test-helper' ),
			'labels'       => [
				'name'          => \__( 'Genres', 'yoast-test-helper' ),
				'singular_name' => \__( 'Genre', 'yoast-test-helper' ),
				'search_items'  => \__( 'Search Genres', 'yoast-test-helper' ),
				'all_items'     => \__( 'All Genres', 'yoast-test-helper' ),
				'edit_item'     => \__( 'Edit Genre', 'yoast-test-helper' ),
				'update_item'   => \__( 'Update Genre', 'yoast-test-helper' ),
				'add_new_item'  => \__( 'Add New Genre', 'yoast-test-helper' ),
				'new_item_name' => \__( 'New Genre Name', 'yoast-test-helper' ),
				'menu_name'     => \__( 'Genre', 'yoast-test-helper' ),
			],
			'rewrite'      => [
				'slug' => $slug,
			],
			'hierarchical' => false,
			'public'       => true,
			'show_in_rest' => true,
		];
	}
}