[Solved] Search PDF by content in Real3D FlipBook Plugin
-
Recently we faced a great plugin to display PDF files in a fancy way - like a paper magazine! It's the Real3D Flipbook plugin, which is awesome! However it also has the same problem - users are not possible to search PDF documents uploaded to the Real3D FlipBook by the content.
Fortunately, it is also simple to fix with the WPFTS Pro.
add_filter('wpfts_index_post', function($index, $p) { global $wpdb, $wpfts_core; if (in_array($p->post_type, array('post', 'page'))) { global $post; if (preg_match_all('~\[real3dflipbook((\s+[^\]]*)|(\]))\]~sU', $p->post_content, $zz, PREG_OFFSET_CAPTURE)) { // 1 is a shortcode params // 0 is a whole shortcode tag require_once $wpfts_core->root_dir.'/includes/wpfts_utils.class.php'; $sum = ''; foreach ($zz[1] as $k => $d) { if (isset($d[0])) { $zz2 = array(); if (preg_match('~id=[\x22\x27]?(\d+)~', $d[0], $zz2)) { $bookid = $zz2[1]; // Look for data $ff = get_option('real3dflipbook_'.$bookid); if ($ff && (is_array($ff))) { if (isset($ff['pdfUrl'])) { $url = trim($ff['pdfUrl']); if (strlen($url) > 0) { $ret = WPFTS_Utils::GetCachedFileContent_ByLocalLink($url); $sum .= (isset($ret['post_content']) ? trim($ret['post_content']) : '').' '; } } } } } } $index['real3dflipbook_content'] .= $sum; /* $content = $p->post_content; // Remove the pdfviewer shortcodes for ($ii = count($zz[0]) - 1; $ii >= 0; $ii --) { $content = substr($content, 0, $zz[0][$ii][1]).substr($content, $zz[0][$ii][1] + strlen($zz[0][$ii][0])); } $index['post_content'] = $content; */ global $shortcode_tags; $removed_tmp = array(); $shortcode_list = array('real3dflipbook'); foreach ($shortcode_list as $dd) { if (isset($shortcode_tags[$dd])) { $removed_tmp[$dd] = $shortcode_tags[$dd]; // Save shortcode function unset($shortcode_tags[$dd]); } else { $removed_tmp[$dd] = false; } add_shortcode($dd, function(){ return ''; }); // Dummy function to render empty string for shortcode } $post = get_post($p->ID); setup_postdata($post); ob_start(); the_content(); $r = ob_get_clean(); $r = strip_tags(str_replace('<', ' <', $r)); // Okay, we need to restore shortcodes foreach ($removed_tmp as $k => $d) { if ($d) { $shortcode_tags[$k] = $removed_tmp[$k]; } else { unset($shortcode_tags[$k]); } } wp_reset_postdata(); $index['post_content'] = $r; } } return $index; }, 3, 2);Well, the code is not that simple, but if you just want to have it works,
download the ready addon!https://fulltextsearch.org/wpfts-addon-real3dflipbook-1.0.0.zip
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login