khaihihi
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* WPSEO plugin file.
|
||||
*
|
||||
* @package WPSEO\Frontend
|
||||
*/
|
||||
|
||||
/**
|
||||
* Adds customizations to the front end for the primary category.
|
||||
*/
|
||||
class WPSEO_Frontend_Primary_Category implements WPSEO_WordPress_Integration {
|
||||
|
||||
/**
|
||||
* Registers the hooks necessary for correct primary category behaviour.
|
||||
*/
|
||||
public function register_hooks() {
|
||||
add_filter( 'post_link_category', [ $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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user