€Xбw,џџџџР?бw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Xбw,џџџџŠћЎBьц€Јзx,РDбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџрXбw,џџџџЩAkZAч€Р<BYбw,џџџџKlsЗа€€Щ B чаw,џџџџ цЇ>За€(ШBXзx,џџџџoП30А1б€зx,0зx,,IŠоуFДР 0Bљаw,џџџџ‘gКšЕа€р%B bбw,џџџџа€ˆ €H0Bиbбw,яЏ ЏЖа€x-B€>бw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Yбw,џџџџ@Yбw,џџџџ€Cбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџржx,џџџџŠћЎBьц€зx,€Hбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€Yбw,џџџџЩAkZAч€Р<B Yбw,џџџџKlsЗа€€Щ BPчаw,џџџџ цЇ>За€(ШBжx,џџџџoП30А1бИжx,€чаw,,IŠоуFДР 0B`љаw,џџџџ‘gКšЕа€р%BHcбw,џџџџа€ˆ €H0B€cбw,яЏ ЏЖа€x-B@Bбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРYбw,џџџџрYбw,џџџџ@Gбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџИcбw,џџџџŠћЎBьц€hжx,@Lбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Zбw,џџџџЩAkZAч€Р<B@Zбw,џџџџKlsЗа€€Щ BАчаw,џџџџ цЇ>За€(ШB`Zбw,џџџџoП30А1б@жx,жx,,IŠоуFДР 0BРљаw,џџџџ‘gКšЕа€р%B(dбw,џџџџа€ˆ €H0B`dбw,яЏ ЏЖа€x-BFбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€Zбw,џџџџ Zбw,џџџџKбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРZбw,џџџџŠћЎBьц€№еx,pбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџрZбw,џџџџЩAkZAч€Р<B[бw,џџџџKlsЗа€€Щ Bрчаw,џџџџ цЇ>За€(ШB [бw,џџџџoП30А1бШеx,шаw,,IŠоуFДР 0B њаw,џџџџ‘gКšЕа€р%Bаdбw,џџџџа€ˆ €H0Beбw,яЏ ЏЖа€x-BРIбw,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@[бw,џџџџ`[бw,џџџџn/disable_primary_term', false ) ) { return $terms; } $post_id = empty( $post_id ) ? $GLOBALS['post']->ID : $post_id; // Get Primary Term. $primary = absint( Helper::get_post_meta( "primary_{$taxonomy}", $post_id ) ); if ( ! $primary ) { return $terms; } $primary_term = null; foreach ( $terms as $index => $term ) { if ( $primary === $term->term_id ) { $primary_term = $term; unset( $terms[ $index ] ); array_unshift( $terms, $primary_term ); break; } } return $terms; } /** * Hide rank math meta keys * * @param bool $is_protected Whether the key is considered protected. * @param string $meta_key Meta key. * * @return bool */ public function hide_rank_math_meta( $is_protected, $meta_key ) { return Str::starts_with( 'rank_math_', $meta_key ) ? true : $is_protected; } /** * Filters the permalink for a post of a custom post type. * * @param string $post_link The post's permalink. * @param WP_Post $post The post in question. * @param object $taxonomy The post taxonomy. */ private function sanitize_post_type_link( &$post_link, $post, $taxonomy ) { $find = "%{$taxonomy}%"; if ( ! Str::contains( $find, $post_link ) ) { return; } $primary_term = $this->get_primary_term( $taxonomy, $post->ID ); if ( false !== $primary_term ) { // Get the hierachical terms. $parents = $this->get_hierarchical_link( $primary_term ); // Replace the placeholder rewrite tag with hierachical terms. $post_link = str_replace( $find, $parents, $post_link ); } } /** * Get chain of hierarchical links. * * @param WP_Term|WP_Error $term The term in question. * * @return string */ private function get_hierarchical_link( $term ) { if ( is_wp_error( $term ) ) { return $term->slug; } $chain = []; $name = $term->slug; if ( $term->parent && ( $term->parent !== $term->term_id ) ) { $chain[] = $this->get_hierarchical_link( get_term( $term->parent, $term->taxonomy ) ); } $chain[] = $name; return implode( '/', $chain ); } /** * Get primary term of the post. * * @param string $taxonomy Taxonomy name. * @param int $post_id Post ID. * * @return object|false Primary term on success, false if there are no terms, WP_Error on failure. */ private function get_primary_term( $taxonomy, $post_id ) { // Early Bail if Primary taxonomy is not enabled on the site. $post_type = get_post_type( $post_id ); if ( empty( $post_type ) || ! Helper::get_settings( 'titles.pt_' . $post_type . '_primary_taxonomy', false ) ) { return false; } $primary = Helper::get_post_meta( "primary_{$taxonomy}", $post_id ); if ( ! $primary ) { return false; } // Early Bail if Primary term is not assigned to the post. $terms = wp_get_post_terms( $post_id, $taxonomy, [ 'fields' => 'ids' ] ); if ( empty( $terms ) || ! in_array( absint( $primary ), $terms, true ) ) { return false; } $primary = get_term( $primary, $taxonomy ); return is_wp_error( $primary ) || empty( $primary ) ? false : $primary; } }