%s',
esc_html__(
'Answer Density measures how much of a published item\'s heading structure reads as a question, and how much of that is answered immediately rather than buried further down. It is a deterministic, local heuristic about structure only.',
'summitcite'
)
);
printf(
'
%s
',
esc_html__(
'A score says nothing about whether an answer is factually correct, complete or well written, does not predict how any AI system will treat the page, and is not a ranking or citation guarantee.',
'summitcite'
)
);
}
/**
* Renders the disabled-module notice. No score table follows it.
*
* @since 1.5.0
*
* @return void
*/
private function render_disabled_notice() {
printf(
'
',
esc_html__( 'Switched off:', 'summitcite' ),
esc_html__( 'Answer Density is disabled, so no scan runs and no score is shown. Stored results from before it was switched off are kept.', 'summitcite' ),
esc_url( admin_url( 'admin.php?page=' . Settings::PAGE_SLUG . '#' . Settings::SECTION_ANSWER_DENSITY ) ),
esc_html__( 'Open Answer Density settings', 'summitcite' )
);
}
/**
* Renders the notice shown when no post type is configured at all.
*
* @since 1.5.0
*
* @return void
*/
private function render_no_types_notice() {
printf(
'
',
esc_html__( 'Nothing configured:', 'summitcite' ),
esc_html__( 'No post type is currently configured for scoring, so there is nothing to scan or list.', 'summitcite' ),
esc_url( admin_url( 'admin.php?page=' . Settings::PAGE_SLUG . '#' . Settings::SECTION_ANSWER_DENSITY ) ),
esc_html__( 'Choose post types', 'summitcite' )
);
}
/**
* Renders the average score, scanned count and per-type breakdown.
*
* @since 1.5.0
*
* @param array $types Currently configured and allowed post types.
* @return void
*/
private function render_summary( array $types ) {
$summary = $this->store->summary( $types );
if ( null === $summary ) {
printf(
'
%s
',
esc_html__( 'The summary could not be loaded.', 'summitcite' )
);
return;
}
?>
$count ) : ?>
$types Currently configured and allowed post types.
* @return void
*/
private function render_scan_all( array $types ) {
$snapshot = $this->store->eligible_snapshot( $types );
$total = null === $snapshot ? 0 : count( $snapshot );
?>
%s',
esc_html__( 'There is no eligible published content to scan yet.', 'summitcite' )
);
}
}
/**
* Renders the type filter and the worst-first results table.
*
* @since 1.5.0
*
* @param array $types Currently configured and allowed post types.
* @return void
*/
private function render_table( array $types ) {
$filter = $this->requested_type_filter( $types );
$paged = $this->requested_page();
$offset = ( $paged - 1 ) * self::PER_PAGE;
$page = $this->store->listing( $types, $filter, self::PER_PAGE, $offset );
?>
render_filter_form( $types, $filter ); ?>
%s',
esc_html__( 'The list could not be loaded.', 'summitcite' )
);
return;
}
if ( 0 === $page['total'] ) {
printf(
'
%s
',
esc_html__( 'No eligible published content matches this filter yet.', 'summitcite' )
);
return;
}
?>