De normale zoekfunctie binnen WordPress zoekt enkel op tekst.
Voor een klant zou dit ook op afbeeldingen moeten, waarbij de klant bepaalde tekst achter de afbeeldingen opzoekbaar kan maken door de bezoekers.
Na wat rondzoeken op het internet kwam ik op volgende code.
Functions.php
Maak eerst een functie aan binnen uw functions.php bestand.
function ngg_get_search_pictures ($keywords, $numberPicRow = NULL) {
global $wpdb;
$count=1;
if (!$numberPicRow) { $numberPicRow = "4"; }
$nngquery = "
SELECT post_content, post_mime_type, ID, guid
FROM wp_posts
WHERE post_mime_type = 'image/jpeg'
";
$pictures = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_mime_type = 'image/jpeg' AND post_content REGEXP '$keywords'", ARRAY_A);
if ($pictures) foreach ($pictures as $pic) {
$out .= '<a href="'.$pic['guid'].'" >';
$out .= '<img src="'.$pic['guid'].'" alt="'.$pic['post_content'].'" title="'.$pic['post_content'].'" height="80px" />';
$out .= "</a>\n";
if ($count == 0) {
$out .= "<p> </p><br /><br /><br /><br />";
}
++$count;
$count%=$numberPicRow;
}
return $out;
};
Deze bovenstaande functie controleert op informatie die:
- een jpg is: post_mime_type = ‘image/jpeg’
- een bepaalde trefwoord heeft: post_content REGEXP ‘$keywords
De trefwoorden van uw afbeeldingen worden ingegevens bij beschrijving, niet de alternatieve tekst. Voor Google redenen die je best ook die alternatieve tekstveld in te vullen, uiteraard. Maar dat mag heus dezelfde tekst zijn.
Search.php
Daarna dien je nog het bestand search.php aan te passen, zodat de afbeeldingen zichtbaar zijn in de zoekresultaten. Naast de post-overzichten uiteraard.
<?php if(is_search()) {
$search = $wp_query->get('s');
$keywords = preg_replace('/\+/',' ',$search);
if (function_exists ('ngg_get_search_pictures')) { // function from functions.php
$nggpictures = ngg_get_search_pictures($keywords, '4'); // put the number of pictures by row you want, if you don't want "4"
if ($nggpictures) {
echo "<h2>Search for pictures</h2>";
echo $nggpictures;
echo "<p> </p><p> </p><p> </p>";
}
}
}
?>
Nu verkrijg je een resultatenlijst met eerst de afbeeldingen, daarna de post-resultaten.
Presentatie afbeeldingen
De afbeelding is afgeknot op hoogte: 80px. Het zou leuk zijn om deze via een fancy box te vergroten.
Hiervoor gebruik je de Easy Fancy Box plugin; deze gaat elke mediabestand automatisch ‘uitvergroten’ nadat je erop hebt geklikt.









