In the Divi 4.9.10 the respective line number to patch is 1913.
How to implement FullTextSearch on a page?
-
@EpsilonAdmin Thank you!
On the search results page, when clicking on the titles to open a document, is there a way to make that open in a new browser tab, rather than in the same tab?
Thanks again.
-
Hi, Larry
Yes, we can use Astra-specific hook to add
target="_blank"
attribute to the title's link.Also I made a hook that adds "Download" link below near to "score" value. Unfortunately it's hard to detect filesize at this point (since the file can be located on another server).
Place this code right below the code that I posted above, in the
functions.php
:// Hook to force search result files to open in new tab add_filter('astra_the_post_title_before', function($before) { if (is_search()) { // Modify the search result title $before = preg_replace('/<a\s+href=/', '<a target="_blank" href=', $before); } return $before; }); // Hook to add "Download" link below the excerpt (near the "Score" value) add_filter('wpfts_se_output', function($a, $post) { if ($a && $post) { if (isset($post['post_type']) && ($post['post_type'] == 'dlp_document')) { // Add Download button $shift = (strlen($a['score']) > 0) ? ' wpfts-shift' : ''; $link = ''; $post_id = $post['ID']; $link_type = get_post_meta($post_id, '_dlp_document_link_type', true); $file_size = get_post_meta($post_id, '_dlp_document_file_size', true); $file_id = get_post_meta($post_id, '_dlp_attached_file_id', true); $link_url = get_post_meta($post_id, '_dlp_direct_link_url', true); $local_url = false; if ($link_type === 'file') { // The attachment post if ($file_id > 0) { $link = wp_get_attachment_url($file_id); } } elseif ($link_type === 'url') { // The link $link = $link_url; } else { // Unknown link_type } if (strlen($link) > 0) { $a['link'] = '<a target="_blank" class="wpfts-download-link'.$shift.'" href="'.esc_url($link).'"><span>'.__('Download', 'fulltext-search').'</span></a>'; } } } return $a; }, 10, 2);
Hope this helps. Thanks you!
-
@EpsilonAdmin This works great except for one small error in the constructed download link. For example, here is the constructed link for one of the search results:
The second occurrence of the "https//" is unnecessary.
I tried to fix this, but php is not my strong point.
Larry
-
Okay, Larry,
could you please show me how the links looks like when added to the Document Library Pro document edit window in WP Admin?
I just checked on my side and I don't see this problem, so I think the difference is how we put links to documents.Thanks!
-
@EpsilonAdmin Attached is a screen cap of one of the documents. The full link for this document is:
https://staging4.hamlinny.org/documents/assessors-office/assessment-rolls/2019/2019-Final-Roll.pdf
If you go to my documents page here:
[https://staging4.hamlinny.org/document-center/](link url)
and search for the word "Sewer" (without the quotes), this document will be the first one in the search results. Note that the link for the title is correct, while the URL for the Download link is incorrect.
-
Okay, Larry,
please could you go to the code we added last time and replace 6th line from the end:
$a['link'] = '<a target="_blank" class="wpfts-download-link'.$shift.'" href="'.esc_url($link).'"><span>'.__('Download', 'fulltext-search').'</span></a>';
by this one:
$a['link'] = '<a target="_blank" class="wpfts-download-link'.$shift.'" href="'.htmlspecialchars($link).'"><span>'.__('Download', 'fulltext-search').'</span></a>';
(actually only
esc_url
has been replaced byhtmlspecialchars
).I think this function breaks the URL somehow on your server (and it's VERY strange).
Please let me know. Thanks!
-
@EpsilonAdmin I replaced esc_url with htmlspecialchars, but that didn't fix the issue. Very strange, indeed.
You can see when you mouseover the Download link that the url is incorrect, right? But the link on the title is correct!
-
@sanfordandson Could there be something in the .htaccess file that is causing this?
-
I don't think so, it looks like a PHP problem.
Which version of the Document Library Pro you are using?
-
@EpsilonAdmin 1.7.2 (current version)
-
@sanfordandson I know it's a cludge, but could you strip out all occurrences of "https//"? That would make the url correct.
-
Okay, Larry
I am sure they made some tricks in the plugin to modify URL, but I can't say which tricks, since I only have version 1.1.2 at the moment.
So let's go with the "patch" solution. Please replace the line
$a['link'] = '<a target="_blank" class="wpfts-download-link'.$shift.'" href="'.htmlspecialchars($link).'"><span>'.__('Download', 'fulltext-search').'</span></a>';
with this one
$a['link'] = '<a target="_blank" class="wpfts-download-link'.$shift.'" href="'.htmlspecialchars(preg_replace('~^\/\/http~', 'http', $link)).'"><span>'.__('Download', 'fulltext-search').'</span></a>';
It should work.
-
@EpsilonAdmin Wow, still didn't work. I even deleted the astra theme's functions.php file from the server, refreshed the browser (it blew up, as expected), then uploaded the modified functions.php file. I did all this to make sure there was no cache issue. Still doesn't work. Real bizarre.
Would it help if I sent you login credentials and ftp credentials via email?
-
Hi, Larry
This would be great, so I can check by myself.
BTW I see a strange error in search results page.Unfortunately I gonna go right now and will be back in some hours to check WP admin. Please send me access to email.
Thanks!
-
@EpsilonAdmin Will do.
-
Hi, Larry
The problem with the links has been fixed - just a typo in the code. The code in the messages above is correct.