Support » Plugin: Pods - Custom Content Types and Fields » Default WordPress Search does not work

  • Resolved gilldart

    (@gilldart)


    Hello,

    I have created my first post-type with Pods and created several posts. It’s great.
    I have now templates and the posts are on the website…
    But when I’m searching one of the words of the content I have no result with default WP search.
    “Exclude from research” is not selected.
    I switch to Twenty Twenty theme and i have no more search result for the post-type…

    What can I do more to resolve this issue ? Where can i explore ?
    Thanks for your help !

    Gilldart

Viewing 11 replies - 1 through 11 (of 11 total)
  • Plugin Author Jory Hogeveen

    (@keraweb)

    Hello @gilldart

    This might be a theme/plugin conflict.
    See this page for more info: https://docs.pods.io/faqs/plugin-theme-conflicts/

    Let me know!
    Cheers, Jory

    Hi Jory,
    and thank you for your reply.

    I have installed “Health Check and Troubleshooting” plugin.
    I only activate Pods plugin and i still have the issue.
    I noticed that the research is working with the titles of the post-type but not with the content. Is there a special config to index the content of the fields ?

    Giildart

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @gilldart

    Is there a special config to index the content of the fields ?

    Did you mean field content or Post content?
    If you meant field content then you should create templates to show these fields.
    Please view our introduction video: https://docs.pods.io/videos/grow-beyond-posts-pages-introduction-pods-framework/

    Cheers, Jory

    Hi Jory,

    I have already seen the vidéo before beginning with Pods. It’s helping.

    I am not sure to understand the difference but I meant the texts in the different Posts i have created (like a WP post or page…).

    Here is what i did :

    I have created a Pod (content type = custom post type) named “Parutions” with 3 fields : ‘Liminaire’, ‘Sommaire’ and “Période”.
    I have two templates : One for the archives and one for the posts “Parutions”.
    I have created about 50 posts ‘Parutions” and there are OK in front office… Of course they have different automatic WP post_title and post_content. The search is working with them but not with the texts of the pods fields (Liminaire, Sommaire, Période).

    Sincerely,
    Gilldart

    • This reply was modified 2 months, 3 weeks ago by gilldart.
    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @gilldart

    Check, in that case you still need to add the templates (PHP or Pods Templates, see video) to the custom post type single/singular pages. There are not there by default.

    Another option is to use pods shortcodes inside your post content, example:

    [pods field="liminaire"] (Make sure this is the field name, not the field label.

    Cheers, Jory

    Hi @keraweb

    And many thanks for your help 😉

    I tried your suggestions without success.

    So I decided to create a new Pod from scratch following the video from 8′ to 30′. I have a Staff pod with page, detail, template… it’s OK.

    But when i am searching the phone number or email of a staff member i still have no result ! Grrrr.

    I think i am going to install a fresh WP.

    I will tell you…
    Sincerely
    Gilldart

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hello @gilldart

    Keep in mind that WP search does not search metadata! So if you search for something that isn’t available in the post content itself the search won’t work.

    You could add all post’s metadata to the search query to fix this.
    Some code I found online, I haven’t verified it work’s 100%:

    
    add_action( 'pre_get_posts', array( $this, 'search_metadata' ), 9 );
    function search_metadata() {
    	if ( ! is_main_query() || ! is_search() ) {
    		return;
    	}
    
    	add_filter( 'posts_join', function( $join ) {
    		global $wpdb;
    		return $join .' LEFT JOIN ' . $wpdb->postmeta . ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
    	} );
    
    	add_filter( 'posts_where', function ( $where ) {
    		global $wpdb;
    
    		$or = array(
    			"(".$wpdb->posts.".post_title LIKE $1)",
    			"(".$wpdb->postmeta.".meta_value LIKE $1)",
    		);
    
    		if ( is_main_query() && is_search() ) {
    			$where = preg_replace(
    				"/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
    				implode( ' OR ', $or ),
    				$where
    			);
    		}
    
    		return $where;
    	} );
    
    	add_filter( 'posts_distinct', function () {
    		global $wpdb;
    		return "DISTINCT";
    	} );
    }
    

    Other options are to use plugins like:
    https://wordpress.org/plugins/relevanssi/

    Cheers, Jory

    Hi Jory,

    So I understand that the search couldn’t find the ‘liminaire’ metadata content.

    I put the code in /wp-content/themes/mytheme/functions.php but i get an error.

    Is it the right place ?

    Do you have a link to the doc ?

    Cheers,
    Gilldart

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @gilldart

    We don’t have a doc, I simply found this online.

    but i get an error

    A right, I think you need to change the first line to this:
    add_action( 'pre_get_posts', 'search_metadata', 9 );

    If you get more errors, please share the exact error.

    Cheers, Jory

    YES !!!

    It’s working. This is great.

    Many thanks for your patience and your help.

    Sincerely
    Gilldart

    Plugin Author Jory Hogeveen

    (@keraweb)

    You’re welcome! The best way to say thanks is to leave a 5 star review at https://wordpress.org/plugins/pods/ and (if you’re feeling especially generous) become a Friend of Pods at https://friends.pods.io/

    Cheers, Jory

Viewing 11 replies - 1 through 11 (of 11 total)
  • You must be logged in to reply to this topic.