Yoast\WP\SEO\Abilities\Application
Post_SEO_Data_Collector{}
Application service that reads the SEO data of one or more posts.
Doubles as a discovery tool: a title keyword search returns full SEO data for every matching post. A request must carry an identifier; an empty request is an error. Only posts the current user may edit are exposed.
Хуков нет.
Использование
$Post_SEO_Data_Collector = new Post_SEO_Data_Collector(); // use class methods
Методы
- public __construct(
- public get_post_seo_data( array $input )
Код Post_SEO_Data_Collector{} Post SEO Data Collector{} Yoast 28.2
class Post_SEO_Data_Collector {
/**
* The post identifier resolver.
*
* @var Post_Identifier_Resolver
*/
private $resolver;
/**
* The post SEO field map.
*
* @var Post_SEO_Field_Map
*/
private $field_map;
/**
* The post access checker.
*
* @var Post_Access_Checker
*/
private $post_access_checker;
/**
* Constructor.
*
* @param Post_Identifier_Resolver $resolver The post identifier resolver.
* @param Post_SEO_Field_Map $field_map The post SEO field map.
* @param Post_Access_Checker $post_access_checker The post access checker.
*/
public function __construct(
Post_Identifier_Resolver $resolver,
Post_SEO_Field_Map $field_map,
Post_Access_Checker $post_access_checker
) {
$this->resolver = $resolver;
$this->field_map = $field_map;
$this->post_access_checker = $post_access_checker;
}
/**
* Retrieves the SEO data for the posts matching the input.
*
* @param array<string, int|string|bool|null> $input The input containing an optional 'post_id', 'permalink', or 'title'.
*
* @return array<int, array<string, int|string|bool|null>>|WP_Error The SEO data for each matching post, or an error.
*/
public function get_post_seo_data( array $input ) {
$indexables = $this->resolver->resolve_many( $input );
if ( $indexables instanceof WP_Error ) {
return $indexables;
}
$editable = $this->post_access_checker->filter_editable( $indexables );
// Every match was a post the user may not edit; an already empty match list
// (a title-search page past the last result) stays a valid empty result.
if ( $editable === [] && $indexables !== [] ) {
return $this->post_access_checker->forbidden_error();
}
return $this->field_map->indexables_to_arrays( $editable );
}
}