File "improve-content-readability.php"
Full Path: /home/ccipcixf/public_html/beta/wp-content/plugins/wordpress-seo/src/task-list/application/tasks/improve-content-readability.php
File size: 5.16 KB
MIME-type: text/x-php
Charset: utf-8
<?php
// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.
namespace Yoast\WP\SEO\Task_List\Application\Tasks;
use Yoast\WP\SEO\Editors\Application\Analysis_Features\Enabled_Analysis_Features_Repository;
use Yoast\WP\SEO\Editors\Framework\Readability_Analysis;
use Yoast\WP\SEO\Helpers\Indexable_Helper;
use Yoast\WP\SEO\Task_List\Application\Tasks\Child_Tasks\Improve_Content_Readability_Child;
use Yoast\WP\SEO\Task_List\Domain\Components\Call_To_Action_Entry;
use Yoast\WP\SEO\Task_List\Domain\Components\Copy_Set;
use Yoast\WP\SEO\Task_List\Domain\Tasks\Abstract_Post_Type_Parent_Task;
use Yoast\WP\SEO\Task_List\Domain\Tasks\Child_Task_Interface;
use Yoast\WP\SEO\Task_List\Infrastructure\Indexables\Recent_Content_Indexable_Collector;
/**
* Represents the task for improving content readability.
*/
class Improve_Content_Readability extends Abstract_Post_Type_Parent_Task {
use Recent_Content_Task_Trait;
/**
* The default maximum number of content items to retrieve.
*
* @var int
*/
public const DEFAULT_LIMIT = 100;
/**
* Holds the id.
*
* @var string
*/
protected $id = 'improve-content-readability';
/**
* Holds the priority.
*
* @var string
*/
protected $priority = 'medium';
/**
* Holds the recent content indexable collector.
*
* @var Recent_Content_Indexable_Collector
*/
private $recent_content_indexable_collector;
/**
* Holds the indexable helper.
*
* @var Indexable_Helper
*/
private $indexable_helper;
/**
* Holds the enabled analysis features repository.
*
* @var Enabled_Analysis_Features_Repository
*/
private $enabled_analysis_features_repository;
/**
* Constructs the task.
*
* @param Recent_Content_Indexable_Collector $recent_content_indexable_collector The recent content indexable collector.
* @param Indexable_Helper $indexable_helper The indexable helper.
* @param Enabled_Analysis_Features_Repository $enabled_analysis_features_repository The enabled analysis features repository.
*/
public function __construct(
Recent_Content_Indexable_Collector $recent_content_indexable_collector,
Indexable_Helper $indexable_helper,
Enabled_Analysis_Features_Repository $enabled_analysis_features_repository
) {
$this->recent_content_indexable_collector = $recent_content_indexable_collector;
$this->indexable_helper = $indexable_helper;
$this->enabled_analysis_features_repository = $enabled_analysis_features_repository;
}
/**
* Returns the task's link.
*
* @return string|null
*/
public function get_link(): ?string {
return null;
}
/**
* Returns the task's call to action entry.
*
* @return Call_To_Action_Entry|null
*/
public function get_call_to_action(): ?Call_To_Action_Entry {
return null;
}
/**
* Returns the task's copy set.
*
* @return Copy_Set
*/
public function get_copy_set(): Copy_Set {
$post_type = \get_post_type_object( $this->get_post_type() );
return new Copy_Set(
/* translators: %1$s expands to the post type label this task is about */
\sprintf( \__( 'Improve the readability of your recent content: %1$s', 'wordpress-seo' ), $post_type->label ),
\sprintf(
/* translators: %1$s expands to an opening p tag, %2$s and %4$s expand to a closing p tag, %3$s expands to an opening p tag and opening strong tag, %5$s expands to a closing strong tag, %6$s expands to an opening strong tag, %7$s expands to a closing strong tag and closing p tag */
\__( '%1$sChecking your recent content\'s readability ensures it stays clear and easy to follow, improving your user experience. Follow the feedback to refine your sentence structure and word choice and maintain a high standard of engagement and comprehension.%2$s%3$sPro tip%5$s: Use %6$sAI Optimize%7$s to automatically simplify complex sentences and improve the flow of your writing.%4$s', 'wordpress-seo' ),
'<p>',
'</p>',
'<p><strong>',
'</p>',
'</strong>',
'<strong>',
'</strong>',
),
);
}
/**
* Populates the child tasks by querying content modified in the last two months.
*
* @return Child_Task_Interface[]
*/
public function populate_child_tasks(): array {
$post_type = $this->get_post_type();
if ( empty( $post_type ) ) {
return [];
}
$two_months_ago = $this->get_recency_timestamp();
$recent_content_items = $this->recent_content_indexable_collector->get_recent_content_with_readability_scores(
$post_type,
$two_months_ago,
self::DEFAULT_LIMIT,
);
$child_tasks = [];
foreach ( $recent_content_items as $content_item_score_data ) {
$child_tasks[] = new Improve_Content_Readability_Child(
$this,
$content_item_score_data,
);
}
return $child_tasks;
}
/**
* Returns whether the task is valid.
*
* @return bool
*/
public function is_valid(): bool {
if ( ! $this->indexable_helper->should_index_indexables() ) {
return false;
}
$enabled_features = $this->enabled_analysis_features_repository->get_enabled_features()->to_array();
if ( ! isset( $enabled_features[ Readability_Analysis::NAME ] ) || $enabled_features[ Readability_Analysis::NAME ] === false ) {
return false;
}
return true;
}
}