Forums › Forums › Search & Filter Pro › Issue with get_fields_html
- This topic has 6 replies, 2 voices, and was last updated 6 years, 9 months ago by Anonymous.
-
Anonymous(Private) March 30, 2018 at 8:09 am #169120
Hi,
Have an issue trying to extract post types via $postTypes1 = $sf_current_query->get_fields_html(array(“_sf_s”, “_sft_access_level”, “post_type”,”_sft_topic”));
echo $postTypes1;only returns
Access Levels: All Access Levels (ie: _sft_access_level)
Topics: All Topics (ie: _sft_topic)but no post types aka Data Type.
You can see the page results here:
The debug structure of the query which clearly shows them here:
Please see image link
or
Is this a bug with get_fields_html?
If the Data Types are checked as filters it’s possible to retrieve them but that is different from retrieving the associated post types via get fields.
<?php $postTypes1 = $sf_current_query->get_fields_html(array("_sf_s", "_sft_access_level", "post_type","_sft_topic")); echo $postTypes1; //echo $sf_current_query->is_filtered(); $postTypesAll = $sf_current_query->get_array(); //var_dump($postTypesAll); //print_r(array_values($postTypesAll)); $postTypes = array_column($postTypesAll, 'active_terms'); //var_dump($postTypes); //print_r(array_values($postTypes)); $newArray = array(); foreach ($postTypes as $entry) { $names = array_column($entry, 'name'); } //var_dump($names); //print_r(array_values($names)); $dataTypes = "<br>Data Types: "; $breakChars = ", "; //echo $dataTypes; for ($i = 0; $i < count($names); $i++) { $nameCompare = strcmp($names[$i], "Posts"); if ($nameCompare == 0) { $names[$i] = 'Articles'; } //echo $names[$i]; if ($i < count($names) - 1) { echo $breakChars; } } //var_dump($names); //print_r(array_values($names)); ?>
Trevor(Private) March 30, 2018 at 11:35 am #169154Are you trying to get terms from the results array? This search shows other user posts that fetch data from the array:
https://support.searchandfilter.com/forums/search/sf_current_query+active_terms/
Anonymous(Private) March 30, 2018 at 3:57 pm #169216No, I’m trying to get the post_type from $sf_current_query->get_fields_html(array(“_sf_s”, “_sft_access_level”, “post_type”,”_sft_topic”));
You can see it in the image under form_fields/post_type/post_types
Why are they not formatted in $sf_current_query->get_fields_html(array(“_sf_s”, “_sft_access_level”, “post_type”,”_sft_topic”)); as in the other array entries?
Anonymous(Private) March 30, 2018 at 4:28 pm #169225I’ve done that already, if you look at the bottom code in the original post.
So what you’re saying is that you can’t access it via $sf_current_query->get_fields_html(array(“_sf_s”, “_sft_access_level”, “post_type”,”_sft_topic”)); despite “post_type” being in there?
There’s not a lot of documentation on it so it’s difficult to know exactly what is to be expected here.
The https://www.designsandcode.com/documentation/search-filter-pro/accessing-search-data/ page just has examples but doesn’t explain much.Anonymous(Private) March 30, 2018 at 11:40 pm #169289Ok, so I was right to use get_array() in the first place (excuse the long winded method, it was for debugging purposes).
The documentation is lacking a little in this regard, so I suggest you clarify the use and differences between get_array() and get_fields_html. The expectation is that if it’s in form_fields you should be able to extract it via get_fields_html into an output string, whereas in you actually need to use get_array() and format the output yourself. In this case we also need to replace a name as well.
ty.
-
AuthorPosts