-
Notifications
You must be signed in to change notification settings - Fork 0
/
related-posts-e.phps
295 lines (295 loc) · 54.1 KB
/
related-posts-e.phps
1
2
3
4
<code><font color="#000000">
<font color="#0000BB"><?php<br /></font><font color="#FF8000">/*<br />Plugin Name: Related Posts<br />Plugin URI: http://www.w-a-s-a-b-i.com/archives/2006/02/02/wordpress-related-entries-20/<br />Description: Returns a list of the related entries based on active/passive keyword matches.<br />Version: 2.02 + 404<br />Author: Alexander Malov & Mike Lu<br />*/<br /><br />// Begin setup<br /><br /></font><font color="#007700">global </font><font color="#0000BB">$ran_plugin</font><font color="#007700">;<br />if (! isset(</font><font color="#0000BB">$ran_plugin</font><font color="#007700">)) {<br /> </font><font color="#0000BB">$ran_plugin </font><font color="#007700">= </font><font color="#0000BB">true</font><font color="#007700">;<br /> if (isset(</font><font color="#0000BB">$_REQUEST</font><font color="#007700">[</font><font color="#DD0000">'setup'</font><font color="#007700">])) </font><font color="#FF8000">// Setup is initiated using related-posts.php?setup<br /> </font><font color="#007700">{<br /> global </font><font color="#0000BB">$file_path</font><font color="#007700">, </font><font color="#0000BB">$user_level</font><font color="#007700">;<br /> require_once(</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">__FILE__</font><font color="#007700">).</font><font color="#DD0000">'/../../' </font><font color="#007700">.</font><font color="#DD0000">'wp-config.php'</font><font color="#007700">);<br /> </font><font color="#0000BB">get_currentuserinfo</font><font color="#007700">();<br /> if (</font><font color="#0000BB">$user_level </font><font color="#007700">< </font><font color="#0000BB">8</font><font color="#007700">)<br /> die (</font><font color="#DD0000">"Sorry, you must be at least a level 8 user."</font><font color="#007700">); </font><font color="#FF8000">// Make sure that user has sufficient priveleges<br /><br />// SQL query to setup the actual full-text index<br /><br /> </font><font color="#007700">require(</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">__FILE__</font><font color="#007700">).</font><font color="#DD0000">'/../../' </font><font color="#007700">.</font><font color="#DD0000">'wp-config.php'</font><font color="#007700">);<br /><br /> global </font><font color="#0000BB">$table_prefix</font><font color="#007700">;<br /> <br /> </font><font color="#0000BB">$connexion </font><font color="#007700">= </font><font color="#0000BB">mysql_connect</font><font color="#007700">(</font><font color="#0000BB">DB_HOST</font><font color="#007700">,</font><font color="#0000BB">DB_USER</font><font color="#007700">,</font><font color="#0000BB">DB_PASSWORD</font><font color="#007700">) or die(</font><font color="#DD0000">"Can't connect.<br />"</font><font color="#007700">.</font><font color="#0000BB">mysql_error</font><font color="#007700">());<br /> </font><font color="#0000BB">$dbconnexion </font><font color="#007700">= </font><font color="#0000BB">mysql_select_db</font><font color="#007700">(</font><font color="#0000BB">DB_NAME</font><font color="#007700">, </font><font color="#0000BB">$connexion</font><font color="#007700">);<br /> <br /> if (!</font><font color="#0000BB">$dbconnexion</font><font color="#007700">)<br /> {<br /> echo </font><font color="#0000BB">mysql_error</font><font color="#007700">();<br /> die();<br /> }<br /> </font><font color="#0000BB">$sql_run </font><font color="#007700">= </font><font color="#DD0000">'ALTER TABLE `'</font><font color="#007700">.</font><font color="#0000BB">$table_prefix</font><font color="#007700">.</font><font color="#DD0000">'posts` ADD FULLTEXT `post_related` ( `post_name` ,'<br /> </font><font color="#007700">. </font><font color="#DD0000">' `post_content` )'</font><font color="#007700">;<br /> </font><font color="#0000BB">$sql_result </font><font color="#007700">= </font><font color="#0000BB">mysql_query</font><font color="#007700">(</font><font color="#0000BB">$sql_run</font><font color="#007700">);<br /> <br /> if (</font><font color="#0000BB">$sql_result</font><font color="#007700">)<br /> echo (</font><font color="#DD0000">"Congratulations! Full text index was created successfully!"</font><font color="#007700">);<br /> <br /> else<br /> echo (</font><font color="#DD0000">" Something went wrong. Please check the instructions on how to setup the full text index manually."</font><font color="#007700">);<br /> }<br />}<br /><br /></font><font color="#FF8000">// End setup<br /><br />// Begin Related Posts<br /><br /></font><font color="#007700">function </font><font color="#0000BB">related_posts</font><font color="#007700">(</font><font color="#0000BB">$limit</font><font color="#007700">=</font><font color="#0000BB">5</font><font color="#007700">, </font><font color="#0000BB">$len</font><font color="#007700">=</font><font color="#0000BB">10</font><font color="#007700">, </font><font color="#0000BB">$before_title </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$after_title </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$before_post </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$after_post </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$show_pass_post </font><font color="#007700">= </font><font color="#0000BB">false</font><font color="#007700">, </font><font color="#0000BB">$show_excerpt </font><font color="#007700">= </font><font color="#0000BB">false</font><font color="#007700">) {<br /> <br />global </font><font color="#0000BB">$wpdb</font><font color="#007700">, </font><font color="#0000BB">$post</font><font color="#007700">;<br /><br /> </font><font color="#FF8000">// Get option values from the options page<br /> <br /> </font><font color="#0000BB">$limit </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'limit'</font><font color="#007700">);<br /> </font><font color="#0000BB">$len </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'len'</font><font color="#007700">);<br /> </font><font color="#0000BB">$before_title </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'before_title'</font><font color="#007700">));<br /> </font><font color="#0000BB">$after_title </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'after_title'</font><font color="#007700">));<br /> </font><font color="#0000BB">$before_post </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'before_post'</font><font color="#007700">));<br /> </font><font color="#0000BB">$after_post </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'after_post'</font><font color="#007700">));<br /> </font><font color="#0000BB">$show_pass_post </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_pass_post'</font><font color="#007700">);<br /> </font><font color="#0000BB">$show_excerpt </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_excerpt'</font><font color="#007700">);<br /> <br /> </font><font color="#FF8000">// Fetch keywords<br /><br /> </font><font color="#0000BB">$postcustom </font><font color="#007700">= </font><font color="#0000BB">get_post_custom_values</font><font color="#007700">(</font><font color="#DD0000">'keyword'</font><font color="#007700">);<br /> if (!empty(</font><font color="#0000BB">$postcustom</font><font color="#007700">)) {<br /> </font><font color="#0000BB">$values </font><font color="#007700">= </font><font color="#0000BB">array_map</font><font color="#007700">(</font><font color="#DD0000">'trim'</font><font color="#007700">, </font><font color="#0000BB">$postcustom</font><font color="#007700">);<br /> </font><font color="#0000BB">$terms </font><font color="#007700">= </font><font color="#0000BB">implode</font><font color="#007700">(</font><font color="#0000BB">$values</font><font color="#007700">, </font><font color="#DD0000">' '</font><font color="#007700">);<br /> } else {<br /> </font><font color="#0000BB">$terms </font><font color="#007700">= </font><font color="#0000BB">str_replace</font><font color="#007700">(</font><font color="#DD0000">'-'</font><font color="#007700">, </font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#0000BB">$post</font><font color="#007700">-></font><font color="#0000BB">post_name</font><font color="#007700">);<br /> }<br /><br /> </font><font color="#FF8000">// Make sure the post is not from the future<br /><br /> </font><font color="#0000BB">$time_difference </font><font color="#007700">= </font><font color="#0000BB">get_settings</font><font color="#007700">(</font><font color="#DD0000">'gmt_offset'</font><font color="#007700">);<br /> </font><font color="#0000BB">$now </font><font color="#007700">= </font><font color="#0000BB">gmdate</font><font color="#007700">(</font><font color="#DD0000">"Y-m-d H:i:s"</font><font color="#007700">,(</font><font color="#0000BB">time</font><font color="#007700">()+(</font><font color="#0000BB">$time_difference</font><font color="#007700">*</font><font color="#0000BB">3600</font><font color="#007700">)));<br /> <br /> </font><font color="#FF8000">// Primary SQL query<br /> <br /> </font><font color="#0000BB">$sql </font><font color="#007700">= </font><font color="#DD0000">"SELECT ID, post_title, post_content, post_excerpt, "<br /> </font><font color="#007700">. </font><font color="#DD0000">"MATCH (post_name, post_content) "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AGAINST ('$terms') AS score "<br /> </font><font color="#007700">. </font><font color="#DD0000">"FROM $wpdb->posts WHERE "<br /> </font><font color="#007700">. </font><font color="#DD0000">"MATCH (post_name, post_content) "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AGAINST ('$terms') "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AND post_date <= '$now' "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AND (post_status IN ( 'publish', 'static' ) && ID != '$post->ID') "</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$show_pass_post</font><font color="#007700">==</font><font color="#DD0000">'false'</font><font color="#007700">) { </font><font color="#0000BB">$sql </font><font color="#007700">.= </font><font color="#DD0000">"AND post_password ='' "</font><font color="#007700">; }<br /> </font><font color="#0000BB">$sql </font><font color="#007700">.= </font><font color="#DD0000">"ORDER BY score DESC LIMIT $limit"</font><font color="#007700">;<br /> </font><font color="#0000BB">$results </font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">get_results</font><font color="#007700">(</font><font color="#0000BB">$sql</font><font color="#007700">);<br /> </font><font color="#0000BB">$output </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$results</font><font color="#007700">) {<br /> foreach (</font><font color="#0000BB">$results </font><font color="#007700">as </font><font color="#0000BB">$result</font><font color="#007700">) {<br /> </font><font color="#0000BB">$title </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">apply_filters</font><font color="#007700">(</font><font color="#DD0000">'the_title'</font><font color="#007700">, </font><font color="#0000BB">$result</font><font color="#007700">-></font><font color="#0000BB">post_title</font><font color="#007700">));<br /> </font><font color="#0000BB">$permalink </font><font color="#007700">= </font><font color="#0000BB">get_permalink</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">-></font><font color="#0000BB">ID</font><font color="#007700">);<br /> </font><font color="#0000BB">$post_excerpt </font><font color="#007700">= </font><font color="#0000BB">strip_tags</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">-></font><font color="#0000BB">post_excerpt</font><font color="#007700">);<br /> </font><font color="#0000BB">$post_excerpt </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">$post_excerpt</font><font color="#007700">);<br /> </font><font color="#0000BB">$output </font><font color="#007700">.= </font><font color="#0000BB">$before_title </font><font color="#007700">.</font><font color="#DD0000">'<a href="'</font><font color="#007700">. </font><font color="#0000BB">$permalink </font><font color="#007700">.</font><font color="#DD0000">'" rel="bookmark" title="Permanent Link: ' </font><font color="#007700">. </font><font color="#0000BB">$title </font><font color="#007700">. </font><font color="#DD0000">'">' </font><font color="#007700">. </font><font color="#0000BB">$title </font><font color="#007700">. </font><font color="#DD0000">'</a>' </font><font color="#007700">. </font><font color="#0000BB">$after_title</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$show_excerpt</font><font color="#007700">==</font><font color="#DD0000">'true'</font><font color="#007700">) {<br /> </font><font color="#0000BB">$words</font><font color="#007700">=</font><font color="#0000BB">split</font><font color="#007700">(</font><font color="#DD0000">" "</font><font color="#007700">,</font><font color="#0000BB">$post_excerpt</font><font color="#007700">); <br /> </font><font color="#0000BB">$post_strip </font><font color="#007700">= </font><font color="#0000BB">join</font><font color="#007700">(</font><font color="#DD0000">" "</font><font color="#007700">, </font><font color="#0000BB">array_slice</font><font color="#007700">(</font><font color="#0000BB">$words</font><font color="#007700">,</font><font color="#0000BB">0</font><font color="#007700">,</font><font color="#0000BB">$len</font><font color="#007700">));<br /> </font><font color="#0000BB">$output </font><font color="#007700">.= </font><font color="#0000BB">$before_post </font><font color="#007700">. </font><font color="#0000BB">$post_strip </font><font color="#007700">. </font><font color="#0000BB">$after_post</font><font color="#007700">;<br /> }<br /> }<br /> echo </font><font color="#0000BB">$output</font><font color="#007700">;<br /> } else {<br /> echo </font><font color="#0000BB">$before_title</font><font color="#007700">.</font><font color="#DD0000">'No related posts'</font><font color="#007700">.</font><font color="#0000BB">$after_title</font><font color="#007700">;<br /> }<br />}<br /><br />function </font><font color="#0000BB">related_posts_404</font><font color="#007700">(</font><font color="#0000BB">$limit</font><font color="#007700">=</font><font color="#0000BB">5</font><font color="#007700">, </font><font color="#0000BB">$len</font><font color="#007700">=</font><font color="#0000BB">10</font><font color="#007700">, </font><font color="#0000BB">$before_title </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$after_title </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$before_post </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$after_post </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#0000BB">$show_pass_post </font><font color="#007700">= </font><font color="#0000BB">false</font><font color="#007700">, </font><font color="#0000BB">$show_excerpt </font><font color="#007700">= </font><font color="#0000BB">false</font><font color="#007700">) {<br /> <br />global </font><font color="#0000BB">$wpdb</font><font color="#007700">, </font><font color="#0000BB">$post</font><font color="#007700">;<br /><br /> </font><font color="#0000BB">$limit </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'limit'</font><font color="#007700">);<br /> </font><font color="#0000BB">$len </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'len'</font><font color="#007700">);<br /> </font><font color="#0000BB">$before_title </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'before_title'</font><font color="#007700">));<br /> </font><font color="#0000BB">$after_title </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'after_title'</font><font color="#007700">));<br /> </font><font color="#0000BB">$before_post </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'before_post'</font><font color="#007700">));<br /> </font><font color="#0000BB">$after_post </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'after_post'</font><font color="#007700">));<br /> </font><font color="#0000BB">$show_pass_post </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_pass_post'</font><font color="#007700">);<br /> </font><font color="#0000BB">$show_excerpt </font><font color="#007700">= </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_excerpt'</font><font color="#007700">);<br /><br /> </font><font color="#0000BB">$search_term </font><font color="#007700">= </font><font color="#0000BB">$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'REQUEST_URI'</font><font color="#007700">];<br /> </font><font color="#0000BB">$search </font><font color="#007700">= array (</font><font color="#DD0000">'@[\/]+@'</font><font color="#007700">, </font><font color="#DD0000">'@(\..*)@'</font><font color="#007700">, </font><font color="#DD0000">'@[\-]+@'</font><font color="#007700">, </font><font color="#DD0000">'@[\_]+@'</font><font color="#007700">, </font><font color="#DD0000">'@[\s]+@'</font><font color="#007700">, </font><font color="#DD0000">'@archives@'</font><font color="#007700">,</font><font color="#DD0000">'@(\?.*)@'</font><font color="#007700">,</font><font color="#DD0000">'/\d/'</font><font color="#007700">);<br /> </font><font color="#0000BB">$replace </font><font color="#007700">= array (</font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#DD0000">''</font><font color="#007700">, </font><font color="#DD0000">''</font><font color="#007700">,</font><font color="#DD0000">''</font><font color="#007700">);<br /> </font><font color="#0000BB">$search_term </font><font color="#007700">= </font><font color="#0000BB">preg_replace</font><font color="#007700">(</font><font color="#0000BB">$search</font><font color="#007700">, </font><font color="#0000BB">$replace</font><font color="#007700">, </font><font color="#0000BB">$search_term</font><font color="#007700">);<br /> </font><font color="#0000BB">$search_term </font><font color="#007700">= </font><font color="#0000BB">trim</font><font color="#007700">(</font><font color="#0000BB">$search_term</font><font color="#007700">);<br /> </font><font color="#0000BB">$terms </font><font color="#007700">= </font><font color="#0000BB">$search_term</font><font color="#007700">;<br /><br /> </font><font color="#0000BB">$time_difference </font><font color="#007700">= </font><font color="#0000BB">get_settings</font><font color="#007700">(</font><font color="#DD0000">'gmt_offset'</font><font color="#007700">);<br /> </font><font color="#0000BB">$now </font><font color="#007700">= </font><font color="#0000BB">gmdate</font><font color="#007700">(</font><font color="#DD0000">"Y-m-d H:i:s"</font><font color="#007700">,(</font><font color="#0000BB">time</font><font color="#007700">()+(</font><font color="#0000BB">$time_difference</font><font color="#007700">*</font><font color="#0000BB">3600</font><font color="#007700">)));<br /> <br /> </font><font color="#FF8000">// Primary SQL query<br /> <br /> </font><font color="#0000BB">$sql </font><font color="#007700">= </font><font color="#DD0000">"SELECT ID, post_title, post_content,"<br /> </font><font color="#007700">. </font><font color="#DD0000">"MATCH (post_name, post_content) "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AGAINST ('$terms') AS score "<br /> </font><font color="#007700">. </font><font color="#DD0000">"FROM $wpdb->posts WHERE "<br /> </font><font color="#007700">. </font><font color="#DD0000">"MATCH (post_name, post_content) "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AGAINST ('$terms') "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AND post_date <= '$now' "<br /> </font><font color="#007700">. </font><font color="#DD0000">"AND (post_status IN ( 'publish', 'static' ) && ID != '$post->ID') "</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$show_pass_post</font><font color="#007700">==</font><font color="#DD0000">'false'</font><font color="#007700">) { </font><font color="#0000BB">$sql </font><font color="#007700">.= </font><font color="#DD0000">"AND post_password ='' "</font><font color="#007700">; }<br /> </font><font color="#0000BB">$sql </font><font color="#007700">.= </font><font color="#DD0000">"ORDER BY score DESC LIMIT $limit"</font><font color="#007700">;<br /> </font><font color="#0000BB">$results </font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">get_results</font><font color="#007700">(</font><font color="#0000BB">$sql</font><font color="#007700">);<br /> </font><font color="#0000BB">$output </font><font color="#007700">= </font><font color="#DD0000">''</font><font color="#007700">;<br /> if (</font><font color="#0000BB">$results</font><font color="#007700">) {<br /> foreach (</font><font color="#0000BB">$results </font><font color="#007700">as </font><font color="#0000BB">$result</font><font color="#007700">) {<br /> </font><font color="#0000BB">$title </font><font color="#007700">= </font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">apply_filters</font><font color="#007700">(</font><font color="#DD0000">'the_title'</font><font color="#007700">, </font><font color="#0000BB">$result</font><font color="#007700">-></font><font color="#0000BB">post_title</font><font color="#007700">));<br /> </font><font color="#0000BB">$permalink </font><font color="#007700">= </font><font color="#0000BB">get_permalink</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">-></font><font color="#0000BB">ID</font><font color="#007700">);<br /> </font><font color="#0000BB">$output </font><font color="#007700">.= </font><font color="#0000BB">$before_title </font><font color="#007700">.</font><font color="#DD0000">'<a href="'</font><font color="#007700">. </font><font color="#0000BB">$permalink </font><font color="#007700">.</font><font color="#DD0000">'" rel="bookmark" title="Permanent Link: ' </font><font color="#007700">. </font><font color="#0000BB">$title </font><font color="#007700">. </font><font color="#DD0000">'">' </font><font color="#007700">. </font><font color="#0000BB">$title </font><font color="#007700">. </font><font color="#DD0000">'</a>' </font><font color="#007700">. </font><font color="#0000BB">$after_title</font><font color="#007700">;<br /> }<br /> echo </font><font color="#0000BB">$output</font><font color="#007700">;<br /> } else {<br /> echo </font><font color="#0000BB">$before_title</font><font color="#007700">.</font><font color="#DD0000">'Fuzzy ...'</font><font color="#007700">.</font><font color="#0000BB">$after_title</font><font color="#007700">;<br /> }<br /><br />}<br /><br /></font><font color="#FF8000">// End Related Posts<br /><br />// Begin Keywords<br /><br /></font><font color="#007700">function </font><font color="#0000BB">find_keywords</font><font color="#007700">(</font><font color="#0000BB">$id</font><font color="#007700">) {<br /> global </font><font color="#0000BB">$wpdb</font><font color="#007700">;<br /> </font><font color="#0000BB">$content </font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">get_var</font><font color="#007700">(</font><font color="#DD0000">"SELECT post_content FROM $wpdb->posts WHERE ID = '$id'"</font><font color="#007700">);<br /> if (</font><font color="#0000BB">preg_match_all</font><font color="#007700">(</font><font color="#DD0000">'/<!--kw=([\s\S]*?)-->/i'</font><font color="#007700">, </font><font color="#0000BB">$content</font><font color="#007700">, </font><font color="#0000BB">$matches</font><font color="#007700">, </font><font color="#0000BB">PREG_SET_ORDER</font><font color="#007700">)) {<br /> </font><font color="#0000BB">$test </font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">get_var</font><font color="#007700">(</font><font color="#DD0000">"SELECT meta_value FROM $wpdb->postmeta WHERE post_id = '$id' AND meta_key = 'keyword'"</font><font color="#007700">);<br /> if (!empty(</font><font color="#0000BB">$test</font><font color="#007700">)) {<br /> </font><font color="#0000BB">$output </font><font color="#007700">= </font><font color="#0000BB">explode</font><font color="#007700">(</font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#0000BB">$test</font><font color="#007700">);<br /> } else {<br /> </font><font color="#0000BB">$output </font><font color="#007700">= array();<br /> }<br /> foreach(</font><font color="#0000BB">$matches </font><font color="#007700">as </font><font color="#0000BB">$match</font><font color="#007700">) {<br /> </font><font color="#0000BB">$output </font><font color="#007700">= </font><font color="#0000BB">array_merge</font><font color="#007700">(</font><font color="#0000BB">$output</font><font color="#007700">, </font><font color="#0000BB">explode</font><font color="#007700">(</font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#0000BB">$match</font><font color="#007700">[</font><font color="#0000BB">1</font><font color="#007700">]));<br /> }<br /> </font><font color="#0000BB">$output </font><font color="#007700">= </font><font color="#0000BB">array_unique</font><font color="#007700">(</font><font color="#0000BB">$output</font><font color="#007700">);<br /> </font><font color="#0000BB">$keywords </font><font color="#007700">= </font><font color="#0000BB">implode</font><font color="#007700">(</font><font color="#DD0000">' '</font><font color="#007700">, </font><font color="#0000BB">$output</font><font color="#007700">);<br /> if (!empty(</font><font color="#0000BB">$test</font><font color="#007700">)) {<br /> </font><font color="#0000BB">$results</font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">query</font><font color="#007700">(</font><font color="#DD0000">"UPDATE $wpdb->postmeta SET meta_value = '$keywords' WHERE post_id = '$id' AND meta_key = 'keyword'"</font><font color="#007700">);<br /> } else {<br /> </font><font color="#0000BB">$results </font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">query</font><font color="#007700">(</font><font color="#DD0000">"INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value) VALUES ('$id', 'keyword', '$keywords')"</font><font color="#007700">);<br /> }<br /> </font><font color="#0000BB">$content </font><font color="#007700">= </font><font color="#0000BB">format_to_post</font><font color="#007700">(</font><font color="#0000BB">balanceTags</font><font color="#007700">(</font><font color="#0000BB">preg_replace</font><font color="#007700">(</font><font color="#DD0000">"/<!--kw=([\s\S]*?)-->/i"</font><font color="#007700">, </font><font color="#DD0000">"<!--$1-->"</font><font color="#007700">, </font><font color="#0000BB">$content</font><font color="#007700">)));<br /> </font><font color="#0000BB">$results </font><font color="#007700">= </font><font color="#0000BB">$wpdb</font><font color="#007700">-></font><font color="#0000BB">query</font><font color="#007700">(</font><font color="#DD0000">"UPDATE $wpdb->posts SET post_content = '$content' WHERE ID = '$id'"</font><font color="#007700">);<br /> }<br /> return </font><font color="#0000BB">$id</font><font color="#007700">;<br />}<br /><br /></font><font color="#FF8000">// End Keywords<br /><br />// Begin Related Posts Options<br /><br /></font><font color="#007700">function </font><font color="#0000BB">rp_subpanel</font><font color="#007700">() {<br /> if (isset(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'update_rp'</font><font color="#007700">])) {<br /> </font><font color="#0000BB">$option_limit </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'limit'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_len </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'len'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_before_title </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'before_title'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_after_title </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'after_title'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_before_post </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'before_post'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_after_post </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'after_post'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_show_pass_post </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'show_pass_post'</font><font color="#007700">];<br /> </font><font color="#0000BB">$option_show_excerpt </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">'show_excerpt'</font><font color="#007700">];<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'limit'</font><font color="#007700">, </font><font color="#0000BB">$option_limit</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'len'</font><font color="#007700">, </font><font color="#0000BB">$option_len</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'before_title'</font><font color="#007700">, </font><font color="#0000BB">$option_before_title</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'after_title'</font><font color="#007700">, </font><font color="#0000BB">$option_after_title</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'before_post'</font><font color="#007700">, </font><font color="#0000BB">$option_before_post</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'after_post'</font><font color="#007700">, </font><font color="#0000BB">$option_after_post</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'show_pass_post'</font><font color="#007700">, </font><font color="#0000BB">$option_show_pass_post</font><font color="#007700">);<br /> </font><font color="#0000BB">update_option</font><font color="#007700">(</font><font color="#DD0000">'show_excerpt'</font><font color="#007700">, </font><font color="#0000BB">$option_show_excerpt</font><font color="#007700">);<br /> </font><font color="#0000BB">?></font> <div class="updated"><p>Options saved!</p></div> <font color="#0000BB"><?php<br /> </font><font color="#007700">}<br /> </font><font color="#0000BB">?><br /></font><br /> <div class="wrap"><br /> <h2>Related Posts Options</h2><br /> <form method="post"><br /> <fieldset class="options"><br /> <table><br /> <tr><br /> <td><label for="limit">How many related posts would you like to show?</label>:</td><br /> <td><input name="limit" type="text" id="limit" value="<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'limit'</font><font color="#007700">); </font><font color="#0000BB">?></font>" size="2" /></td><br /> </tr><br /> <tr><br /> <td><label for="before_title">Before</label> / <label for="after_title">After (Post Title) </label>:</td><br /> <td><input name="before_title" type="text" id="before_title" value="<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'before_title'</font><font color="#007700">))); </font><font color="#0000BB">?></font>" size="10" /> / <input name="after_title" type="text" id="after_title" value="<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'after_title'</font><font color="#007700">))); </font><font color="#0000BB">?></font>" size="10" /><em><small> For example: &lt;li&gt;&lt;/li&gt; or &lt;dl&gt;&lt;/dl&gt;</small></em><br /> </td><br /> </tr><br /> <tr><br /> <td>Show excerpt?</td><br /> <td><br /> <select name="show_excerpt" id="show_excerpt"><br /> <option <font color="#0000BB"><?php </font><font color="#007700">if(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_excerpt'</font><font color="#007700">) == </font><font color="#DD0000">'false'</font><font color="#007700">) { echo </font><font color="#DD0000">'selected'</font><font color="#007700">; } </font><font color="#0000BB">?></font> value="false">False</option><br /> <option <font color="#0000BB"><?php </font><font color="#007700">if(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_excerpt'</font><font color="#007700">) == </font><font color="#DD0000">'true'</font><font color="#007700">) { echo </font><font color="#DD0000">'selected'</font><font color="#007700">; } </font><font color="#0000BB">?></font> value="true">True</option><br /> </select><br /> </td> <br /> </tr><br /> <tr><br /> <td><label for="len">Excerpt length (No. of words):</label></td><br /> <td><input name="len" type="text" id="len" value="<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'len'</font><font color="#007700">); </font><font color="#0000BB">?></font>" size="2" /> <br /> </tr><br /> <tr><br /> <td><label for="before_post">Before</label> / <label for="after_post">After</label> (Excerpt):</td><br /> <td><input name="before_post" type="text" id="before_post" value="<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'before_post'</font><font color="#007700">))); </font><font color="#0000BB">?></font>" size="10" /> / <input name="after_post" type="text" id="after_post" value="<font color="#0000BB"><?php </font><font color="#007700">echo </font><font color="#0000BB">htmlspecialchars</font><font color="#007700">(</font><font color="#0000BB">stripslashes</font><font color="#007700">(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'after_post'</font><font color="#007700">))); </font><font color="#0000BB">?></font>" size="10" /><em><small> For example: &lt;li&gt;&lt;/li&gt; or &lt;dl&gt;&lt;/dl&gt;</small></em><br /> </td><br /> </tr><br /> <tr><br /> <td><label for="show_pass_post">Show password protected posts?</label></td><br /> <td><br /> <select name="show_pass_post" id="show_pass_post"><br /> <option <font color="#0000BB"><?php </font><font color="#007700">if(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_pass_post'</font><font color="#007700">) == </font><font color="#DD0000">'false'</font><font color="#007700">) { echo </font><font color="#DD0000">'selected'</font><font color="#007700">; } </font><font color="#0000BB">?></font> value="false">False</option><br /> <option <font color="#0000BB"><?php </font><font color="#007700">if(</font><font color="#0000BB">get_option</font><font color="#007700">(</font><font color="#DD0000">'show_pass_post'</font><font color="#007700">) == </font><font color="#DD0000">'true'</font><font color="#007700">) { echo </font><font color="#DD0000">'selected'</font><font color="#007700">; } </font><font color="#0000BB">?></font> value="true">True</option><br /> </select> <br /> </td><br /> </tr><br /> </table><br /> </fieldset><br /><br /> <p><div class="submit"><input type="submit" name="update_rp" value="<font color="#0000BB"><?php _e</font><font color="#007700">(</font><font color="#DD0000">'Save!'</font><font color="#007700">, </font><font color="#DD0000">'update_rp'</font><font color="#007700">) </font><font color="#0000BB">?></font>" style="font-weight:bold;" /></div></p><br /> <br /> </form> <br /> <br /> </div><br /> <br /> <div class="wrap"> <br /> <h2>SQL Index Table Setup</h2><br /> <p>If this is your first time installing this plugin you will have to run <a href="../wp-content/plugins/related-posts.php?setup" onclick="window.open(this.href, 'popupwindow', 'width=400,height=150,scrollbars,resizable'); return false;">this script</a> (opens a new window) in order to create the index table required by the plugin. If this fails, please refer to the readme on how to create it manually.</p><br /> <br /> </div><br /><br /><font color="#0000BB"><?php </font><font color="#007700">} <br /><br /></font><font color="#FF8000">// End Related Posts Options<br /><br /></font><font color="#007700">function </font><font color="#0000BB">rp_admin_menu</font><font color="#007700">() {<br /> if (</font><font color="#0000BB">function_exists</font><font color="#007700">(</font><font color="#DD0000">'add_submenu_page'</font><font color="#007700">)) {<br /> </font><font color="#0000BB">add_submenu_page</font><font color="#007700">(</font><font color="#DD0000">'plugins.php'</font><font color="#007700">, </font><font color="#0000BB">__</font><font color="#007700">(</font><font color="#DD0000">'Related Posts Options'</font><font color="#007700">), </font><font color="#0000BB">__</font><font color="#007700">(</font><font color="#DD0000">'Related Posts Options'</font><font color="#007700">), </font><font color="#0000BB">1</font><font color="#007700">, </font><font color="#0000BB">__FILE__</font><font color="#007700">, </font><font color="#DD0000">'rp_subpanel'</font><font color="#007700">);<br /> }<br />}<br /><br /></font><font color="#0000BB">add_action</font><font color="#007700">(</font><font color="#DD0000">'edit_post'</font><font color="#007700">, </font><font color="#DD0000">'find_keywords'</font><font color="#007700">, </font><font color="#0000BB">1</font><font color="#007700">);<br /></font><font color="#FF8000">// add_action('publish_post', 'find_keywords', 1);<br /></font><font color="#0000BB">add_action</font><font color="#007700">(</font><font color="#DD0000">'admin_menu'</font><font color="#007700">, </font><font color="#DD0000">'rp_admin_menu'</font><font color="#007700">);<br /><br /></font><font color="#0000BB">?></font>
</font>
</code>