exceptions
5 years ago
options
3 months ago
sitemaps
3 months ago
class-addon-manager.php
3 months ago
class-my-yoast-api-request.php
3 months ago
class-post-type.php
1 year ago
class-rewrite.php
3 months ago
class-upgrade-history.php
3 months ago
class-upgrade.php
3 months ago
class-wpseo-admin-bar-menu.php
3 weeks ago
class-wpseo-content-images.php
3 months ago
class-wpseo-custom-fields.php
1 year ago
class-wpseo-custom-taxonomies.php
3 months ago
class-wpseo-image-utils.php
3 months ago
class-wpseo-installation.php
7 months ago
class-wpseo-meta.php
3 weeks ago
class-wpseo-primary-term.php
2 years ago
class-wpseo-rank.php
3 months ago
class-wpseo-replace-vars.php
3 months ago
class-wpseo-replacement-variable.php
5 years ago
class-wpseo-shortlinker.php
2 years ago
class-wpseo-statistics.php
5 years ago
class-wpseo-utils.php
2 months ago
class-yoast-dynamic-rewrites.php
2 years ago
date-helper.php
5 years ago
index.php
10 years ago
interface-wpseo-wordpress-ajax-integration.php
7 years ago
interface-wpseo-wordpress-integration.php
7 years ago
language-utils.php
2 years ago
wpseo-functions-deprecated.php
2 years ago
wpseo-functions.php
2 years ago
wpseo-non-ajax-functions.php
5 years ago
class-wpseo-primary-term.php
87 lines
| 1 | <?php |
| 2 | /** |
| 3 | * WPSEO plugin file. |
| 4 | * |
| 5 | * @package WPSEO |
| 6 | */ |
| 7 | |
| 8 | /** |
| 9 | * Represents a post's primary term. |
| 10 | */ |
| 11 | class WPSEO_Primary_Term { |
| 12 | |
| 13 | /** |
| 14 | * Taxonomy name for the term. |
| 15 | * |
| 16 | * @var string |
| 17 | */ |
| 18 | protected $taxonomy_name; |
| 19 | |
| 20 | /** |
| 21 | * Post ID for the term. |
| 22 | * |
| 23 | * @var int |
| 24 | */ |
| 25 | protected $post_ID; |
| 26 | |
| 27 | /** |
| 28 | * The taxonomy this term is part of. |
| 29 | * |
| 30 | * @param string $taxonomy_name Taxonomy name for the term. |
| 31 | * @param int $post_id Post ID for the term. |
| 32 | */ |
| 33 | public function __construct( $taxonomy_name, $post_id ) { |
| 34 | $this->taxonomy_name = $taxonomy_name; |
| 35 | $this->post_ID = $post_id; |
| 36 | } |
| 37 | |
| 38 | /** |
| 39 | * Returns the primary term ID. |
| 40 | * |
| 41 | * @return int|bool |
| 42 | */ |
| 43 | public function get_primary_term() { |
| 44 | $primary_term = get_post_meta( $this->post_ID, WPSEO_Meta::$meta_prefix . 'primary_' . $this->taxonomy_name, true ); |
| 45 | |
| 46 | if ( ! $primary_term ) { |
| 47 | return false; |
| 48 | } |
| 49 | |
| 50 | $terms = $this->get_terms(); |
| 51 | |
| 52 | if ( ! in_array( (int) $primary_term, wp_list_pluck( $terms, 'term_id' ), true ) ) { |
| 53 | $primary_term = false; |
| 54 | } |
| 55 | |
| 56 | $primary_term = (int) $primary_term; |
| 57 | return ( $primary_term ) ? ( $primary_term ) : false; |
| 58 | } |
| 59 | |
| 60 | /** |
| 61 | * Sets the new primary term ID. |
| 62 | * |
| 63 | * @param int $new_primary_term New primary term ID. |
| 64 | * |
| 65 | * @return void |
| 66 | */ |
| 67 | public function set_primary_term( $new_primary_term ) { |
| 68 | update_post_meta( $this->post_ID, WPSEO_Meta::$meta_prefix . 'primary_' . $this->taxonomy_name, $new_primary_term ); |
| 69 | } |
| 70 | |
| 71 | /** |
| 72 | * Get the terms for the current post ID. |
| 73 | * When $terms is not an array, set $terms to an array. |
| 74 | * |
| 75 | * @return array |
| 76 | */ |
| 77 | protected function get_terms() { |
| 78 | $terms = get_the_terms( $this->post_ID, $this->taxonomy_name ); |
| 79 | |
| 80 | if ( ! is_array( $terms ) ) { |
| 81 | $terms = []; |
| 82 | } |
| 83 | |
| 84 | return $terms; |
| 85 | } |
| 86 | } |
| 87 |