- This topic has 4 replies, 2 voices, and was last updated 11 years, 4 months ago by BePro Software Team.
-
AuthorPosts
-
June 30, 2015 at 11:40 am #6029CosminMember
Salut.
I replaced all dollar sines with @, single quotes with * and double quotes with ~ in order to be able to post the solution.
<b>If anyone can help with this topic – please help.</b>
Even if the custom search feature isn*t there now we can still make sense out of it, right?<b>How to display listings based on a custom field?</b>
For starters, with the builder we*ll make a select field with 3 entries.
We name the select field something unique: gr_select_program
The values are: short,long,extended.How to search for Listings that have the long program?
We need to find in the database the string ~gr_select_program~:~long~So that translates into this query:
SELECT post_id FROM *wp_bepro_listings_form* WHERE form_values like *%gr_select_program~:~lung%*;
In worpress code that translates as$my_custom_lists = $wpdb->get_results(~SELECT post_id FROM *WPTABLEPREFIX_bepro_listings_form* WHERE form_values like *%~.@custom_search.~%*~, ARRAY_N);Be careful to change:
1. WPTABLEPREFIX to your actual prefix – the bepro constant for this table doesn*t work for me at this time so I just hardcoded the table name
2. Put the table name in backquotes instead of single quote – that*s the left-most key under Esc.which results in a 2 dimention numerically indexed array, thus echo @my_custom_lists[0][0]; would output the first post_id (if any!)
Great – now we have the IDs of all the Listings that have an unique custom field value.
Now for the second part – displaying the results.
In the file bepro_listings_frontend.php [from the listing plugin, not the formBuilder] we have the function display_listings which will display the listings based on shortcode.To the extract(shortcode add one more case to solve:
*custom_search* => @_REQUEST[*custom_search*],Now we have our own custom_search shortcut field.
just a few more rows in the page*s code you*ll see this comment:
//make presumption to randomize featured listingsjust above it add our processing of the shortcode
// deal with custom search if(!empty(@custom_search)){ @my_custom_lists = @wpdb->get_results(~SELECT post_id FROM *WP_PREFIX_bepro_listings_form* WHERE form_values like *%~.@custom_search.~%*~, ARRAY_N); @l_ids=**; // whatever l_ids we have selected in the shortcode is now gone if(count(@my_custom_lists)>0){ foreach (@my_custom_lists[0] as @v_post){@l_ids.=@v_post.*,*;} @l_ids=rtrim(@l_ids, ~,~); //delete the last added coma }else{@l_ids=*4702*;} // exception to be treated if no rows are found - I just put a known field ftm }Don*t forget to change WP_PREFIX with your own prefix
Don*t forget to put this table name in back-quotes instead of single quotes.If all is done correctly – we now have a functional shortcode for our special fields. Write the shortcode, inside your wp page, like this:
[display_listings l_ids= *4269* custom_search=*gr_select_program___long*]You must enter something for l_ids – it will be overwritten.
Mark that I have replaced the ~:~ with 3 underscores which makes it more clean to understand the shortcode [underscore is mysql wildcard for single character].That*s it. We are able to display a list of our custom entries. Of course we can now combine this with origami field and bl_form_id field to sort our entries.
Anyone care to extend this functionality to the actual search function?
July 1, 2015 at 5:06 pm #6048BePro Software TeamKeymasterHi,
Thanks for sharing.
You can definitely create an addon which does this. You can alter/add to the search query using wordpress action hooks. We talk about this here
– https://www.beprosoftware.com/documentation/architecture-built-to-scale/
Hopefully, a few members from the community will be willing to contribute to this evolution!
___
BePro Software TeamJuly 2, 2015 at 5:31 am #6052CosminMemberThanks.
I’ve never build a wp plugin and as much as I would like to do this I’m under development and behind my work so any quick fix would do to meet the deadline.Making a plugin out of this solution involves also a great deal of testing.
If anyone has the spare time – pluginise away ^_^July 2, 2015 at 8:59 am #6053BePro Software TeamKeymasterCompletely understand 🙂
___
BePro Software Team -
AuthorPosts
- You must be logged in to reply to this topic.
