Viewing file: class-primary-category.php (1.74 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * @package WPSEO\Frontend */
/** * Adds customizations to the front end for the primary category */ class WPSEO_Frontend_Primary_Category {
/** * Registers the hooks necessary for correct primary category behaviour. */ public function register_hooks() { add_filter( 'post_link_category', array( $this, 'post_link_category' ) , 10, 3 ); }
/** * Filters post_link_category to change the category to the chosen category by the user * * @param stdClass $category The category that is now used for the post link. * @param array $categories This parameter is not used. * @param WP_Post $post The post in question. * * @return array|null|object|WP_Error The category we want to use for the post link. */ public function post_link_category( $category, $categories = null, $post = null ) { $post = get_post( $post ); $primary_category = $this->get_primary_category( $post );
if ( false !== $primary_category && $primary_category !== $category->cat_ID ) { $category = $this->get_category( $primary_category ); }
return $category; }
/** * Get the id of the primary category * * @param WP_Post $post The post in question. * * @return int primary category id */ protected function get_primary_category( $post = null ) { $post = get_post( $post );
if ( $post === null ) { return false; }
$primary_term = new WPSEO_Primary_Term( 'category', $post->ID );
return $primary_term->get_primary_term(); }
/** * Wrapper for get category to make mocking easier * * @param int $primary_category id of primary category. * * @return array|null|object|WP_Error */ protected function get_category( $primary_category ) { $category = get_category( $primary_category );
return $category; } }
|