Fix missing thumbnails by resolving Google News redirect URLs before OG scraping

The OG image scraper was using Google News redirect URLs (source_url) directly,
which don't serve og:image tags. Added resolve_scrape_url() to follow redirects
(including meta-refresh and JS redirects) to reach the actual publisher page
before scraping. Also added a backfill AJAX endpoint and admin button to
re-scrape thumbnails for existing articles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Terence Ong
2026-04-06 19:32:09 +07:00
parent 18158a3b81
commit 5918a7d446
3 changed files with 183 additions and 1 deletions

View File

@@ -567,6 +567,14 @@ class Peptide_News_Admin {
echo esc_html__( 'Fix Article Sources', 'peptide-news' );
echo '</button>';
echo '<span id="peptide-backfill-result" style="margin-left:10px;"></span>';
// Backfill Thumbnails button.
echo '<div style="margin-top:8px;">';
echo '<button type="button" id="peptide-backfill-thumbnails" class="button button-secondary">';
echo esc_html__( 'Fix Article Thumbnails', 'peptide-news' );
echo '</button>';
echo '<span id="peptide-thumb-result" style="margin-left:10px;"></span>';
echo '</div>';
?>
<script>
(function($) {
@@ -589,6 +597,26 @@ class Peptide_News_Admin {
$result.text('Request failed.');
});
});
$('#peptide-backfill-thumbnails').on('click', function() {
var $btn = $(this), $result = $('#peptide-thumb-result');
$btn.prop('disabled', true).text('<?php echo esc_js( __( 'Scraping...', 'peptide-news' ) ); ?>');
$result.text('This may take a minute...');
$.post(peptideNewsAdmin.ajax_url, {
action: 'peptide_news_backfill_thumbnails',
nonce: peptideNewsAdmin.admin_nonce
}, function(response) {
$btn.prop('disabled', false).text('<?php echo esc_js( __( 'Fix Article Thumbnails', 'peptide-news' ) ); ?>');
if (response.success) {
$result.text(response.data.updated + ' thumbnail(s) scraped.');
} else {
$result.text('Error: ' + (response.data || 'Unknown error'));
}
}).fail(function() {
$btn.prop('disabled', false).text('<?php echo esc_js( __( 'Fix Article Thumbnails', 'peptide-news' ) ); ?>');
$result.text('Request failed.');
});
});
})(jQuery);
</script>
<?php