Images not visible in search results

387 views Asked by At

I have this custom search function to search trough custom meta keys in Wordpress. The function works well.

However, all the images that I have added to my post using Advanced Custom Fields are now having their URL's changed to the attachment ID.

This should not happen according to the settings page in ACF:

ACF image field settings

The same field works ok on other pages, just not on the search results page. Check how it changes the image source on the search results:

image src changed to attachment id

How and why is the image URL here changed to the attachment ID? Kindly check out my code below:

function custom_search_function($pieces) {

    // filter to select search query
    if (is_search() && !is_admin()) {

        global $wpdb;
        $custom_fields = array('regio','provincie');
        $keywords = explode(' ', get_query_var('s'));
        $query = "";
        foreach ($custom_fields as $field) {
             foreach ($keywords as $word) {
                 $query .= "((mypm1.meta_key = '".$field."')";
                 $query .= " AND (mypm1.meta_value  LIKE '%{$word}%')) OR ";
             }
        }

        if (!empty($query)) {
            // add to where clause
            $pieces['where'] = str_replace("((({$wpdb->posts}.post_title LIKE '%", "( {$query} (({$wpdb->posts}.post_title LIKE '%", $pieces['where']);

            $pieces['join'] = $pieces['join'] . " INNER JOIN {$wpdb->postmeta} AS mypm1 ON ({$wpdb->posts}.ID = mypm1.post_id)";
            //$pieces['groupby'] = "{$wpdb->posts}.ID";
        }
    }
    return ($pieces);
}
add_filter('posts_clauses', 'custom_search_function', 20, 1);

EDIT: Here's the code that displays my post results, the "foto" field is the field which is responsible for displaying the image:

<?php foreach( $posts as $post ): 

    //fusion-column-last, or none for normal class
    $lastclass = '';

    if(++$counter % 2 === 0) {
    $lastclass = ' fusion-column-last';
    }

    setup_postdata( $post )

    ?>
    <div class="fusion-one-half fusion-layout-column fusion-spacing-yes<?php echo $lastclass?>" style="margin-top:0px;margin-bottom:20px;background-color:white;">
        <div class="fusion-column-wrapper">
            <div class="bw-search-picture">
                <?php $postid = get_the_ID(); ?> 
                <?php //echo $postid; ?>
                <img src="<?php the_field('foto', $postid); ?>" alt="<?php the_title(); ?>"/>
            </div>
            <div class="bw-search-content">
                <h2>
                    <a class="green" href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
                </h2>
                <p class="bw-regio">Regio <?php the_field('regio'); ?></p>
                <p>
                    <a style="color:#9C9E9F;" href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">LEES VERDER ></a>
                </p>
            </div>
        </div>
    </div>

<?php endforeach; ?>
2

There are 2 answers

5
Hakem On BEST ANSWER

Try for the thumbnail:

$imgsrc = wp_get_attachment_image_src(get_post_thumbnail_id( $post_id ));
echo $imgsrc[0];

Edit, use this code with the attachment id:

$imgsrc = wp_get_attachment_image_src(get_field('foto', $postid));
echo $imgsrc[0];
1
BenEgan1991 On

Rather than using

<img src="<?php the_field('foto', $postid); ?>" />

Try using

<?php $foto_url = get_field('foto', $postid); ?>
<img src="<?php echo $foto_url; ?>" />