123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?php
- /**
- * WPSEO plugin file.
- *
- * @package WPSEO\Admin
- */
- /**
- * This class handles the calculation of the SEO score for all terms.
- */
- class WPSEO_Recalculate_Terms extends WPSEO_Recalculate {
- /**
- * Save the scores.
- *
- * @param array $scores The scores to save.
- */
- public function save_scores( array $scores ) {
- $tax_meta = get_option( 'wpseo_taxonomy_meta' );
- foreach ( $scores as $score ) {
- $tax_meta[ $score['taxonomy'] ][ $score['item_id'] ]['wpseo_linkdex'] = $score['score'];
- }
- update_option( 'wpseo_taxonomy_meta', $tax_meta );
- }
- /**
- * Save the score.
- *
- * @param array $score The score to save.
- */
- protected function save_score( array $score ) {
- WPSEO_Meta::set_value( 'linkdex', $score['score'], $score['item_id'] );
- }
- /**
- * Get the terms from the database by doing a WP_Query.
- *
- * @param integer $paged The page.
- *
- * @return array
- */
- protected function get_items( $paged ) {
- $items_per_page = max( 1, $this->items_per_page );
- return get_terms(
- get_taxonomies(),
- [
- 'hide_empty' => false,
- 'number' => $items_per_page,
- 'offset' => ( $items_per_page * abs( $paged - 1 ) ),
- ]
- );
- }
- /**
- * Convert the given term into a analyzable object.
- *
- * @param mixed $item The term for which to build the analyzer data.
- *
- * @return array
- */
- protected function item_to_response( $item ) {
- $focus_keyword = $this->get_focus_keyword( $item );
- $title = str_replace( ' %%page%% ', ' ', $this->get_title( $item ) );
- $meta = $this->get_meta_description( $item );
- $description = $item->description;
- /**
- * Filter the term description for recalculation.
- *
- * @param string $description Content of the term. Modify to reflect front-end content.
- * @oaram WP_Term $item The term the description comes from.
- */
- $description = apply_filters( 'wpseo_term_description_for_recalculation', $description, $item );
- return [
- 'term_id' => $item->term_id,
- 'taxonomy' => $item->taxonomy,
- 'text' => $description,
- 'keyword' => $focus_keyword,
- 'url' => urldecode( $item->slug ),
- 'pageTitle' => apply_filters( 'wpseo_title', wpseo_replace_vars( $title, $item, [ 'page' ] ) ),
- 'meta' => apply_filters( 'wpseo_metadesc', wpseo_replace_vars( $meta, $item ) ),
- 'keyword_usage' => [
- $focus_keyword => WPSEO_Taxonomy_Meta::get_keyword_usage( $focus_keyword, $item->term_id, $item->taxonomy ),
- ],
- ];
- }
- /**
- * Gets the focus keyword for the term.
- *
- * @param stdClass|WP_Term $term Term to determine the keyword for.
- *
- * @return bool|string
- */
- private function get_focus_keyword( $term ) {
- $focus_keyword = WPSEO_Taxonomy_Meta::get_term_meta( 'focuskw', $term->term_id, $term->taxonomy );
- if ( ! empty( $focus_keyword ) ) {
- return $focus_keyword;
- }
- return $term->name;
- }
- /**
- * Get the title for given term.
- *
- * @param stdClass|WP_Term $term The term object.
- *
- * @return mixed|string
- */
- private function get_title( $term ) {
- $title = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $term->taxonomy, 'title' );
- if ( '' !== $title ) {
- return $title;
- }
- $default_from_options = $this->default_from_options( 'title-tax', $term->taxonomy );
- if ( false !== $default_from_options ) {
- return $default_from_options;
- }
- return '%%title%%';
- }
- /**
- * Get the meta description for given post.
- *
- * @param stdClass|WP_Term $term The term object.
- *
- * @return bool|string
- */
- private function get_meta_description( $term ) {
- $meta_description = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $term->taxonomy, 'desc' );
- if ( '' !== $meta_description ) {
- return $meta_description;
- }
- $default_from_options = $this->default_from_options( 'metadesc-tax', $term->taxonomy );
- if ( false !== $default_from_options ) {
- return $default_from_options;
- }
- return '';
- }
- }
|