Images not visible in search results

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.

Read More

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; ?>

Related posts

2 comments

  1. 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];
    
  2. 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; ?>" />
    

Comments are closed.