[Plugin: Share On Facebook] Share on Facebook plugin code
-
I had to rework this code so it would be valid XHTML, and in the process made the PHP a lot nicer as well. Let’s see how this handles a big block of code:
<?php /* Plugin Name: Share On Facebook Version: 1.1 Plugin URI: https://nothing.golddave.com/?page_id=680 Description: Adds a footer link to add the current post or page to as a Facebook link. Author: David Goldstein Author URI: https://nothing.golddave.com/ */ /* Change Log 1.1 * Fixed bug in template tag implementation. 1.0 * First public release. */ function share_on_facebook($data = ''){ global $post; $current_options = get_option('share_on_facebook_options'); $url = 'https://www.facebook.com/share.php?u=' . rawurlencode(get_permalink($post->ID)) . '&t=' . rawurlencode(get_post($post->ID)->post_title); $basestyle = "font-size:11px; line-height:13px; font-family:'lucida grande',tahoma,verdana,arial,sans-serif; text-decoration:none;"; switch ($current_options['link_type']) { case "link": $data .= <<< HTML <a href="$url" id="facebook_share_link">Share on Facebook</a> HTML; break; case "icon": $data .= <<< HTML <a href="$url" id="facebook_share_icon" style="$basestyle"><img src="https://b.static.ak.fbcdn.net/images/share/facebook_share_icon.gif" alt="Share on Facebook" /></a> HTML; break; case "both": $data .= <<< HTML <a href="$url" id="facebook_share_both" style="$basestyle padding:2px 0 0 20px; height:16px; background:url(https://b.static.ak.fbcdn.net/images/share/facebook_share_icon.gif) no-repeat top left;">Share on Facebook</a> HTML; break; case "button": $data .= <<< HTML <a href="$url" id="facebook_share_button" style="$basestyle display: -moz-inline-block; display:inline-block; padding:1px 20px 0 5px; margin: 5px 0; height:15px; border:1px solid #d8dfea; color: #3B5998; background: #fff url(https://b.static.ak.fbcdn.net/images/share/facebook_share_icon.gif) no-repeat top right;">Share</a> HTML; break; } $data .= <<< HTML <script type="text/javascript"> var button = document.getElementById('facebook_share_link') || document.getElementById('facebook_share_icon') || document.getElementById('facebook_share_both') || document.getElementById('facebook_share_button'); if (button) { button.onclick = function(e) { var url = this.href.replace(/share\.php/, 'sharer.php'); window.open(url,'sharer','toolbar=0,status=0,width=626,height=436'); return false; } if (button.id === 'facebook_share_button') { button.onmouseover = function(){ this.style.color='#fff'; this.style.borderColor = '#295582'; this.style.backgroundColor = '#3b5998'; } button.onmouseout = function(){ this.style.color = '#3b5998'; this.style.borderColor = '#d8dfea'; this.style.backgroundColor = '#fff'; } } } </script> HTML; return $data; } function activate_share_on_facebook(){ global $post; $current_options = get_option('share_on_facebook_options'); $insertiontype = $current_options['insertion_type']; if ($insertiontype !== 'template'){ add_filter('the_content', 'share_on_facebook', 10); add_filter('the_excerpt', 'share_on_facebook', 10); } } activate_share_on_facebook(); function shareonfacebook(){ global $post; $current_options = get_option('share_on_facebook_options'); $insertiontype = $current_options['insertion_type']; if ($insertiontype !== 'auto'){ echo share_on_facebook(); } } // Create the options page function share_on_facebook_options_page() { $current_options = get_option('share_on_facebook_options'); $link = $current_options["link_type"]; $insert = $current_options["insertion_type"]; if ($_POST['action']){ ?> <div id="message" class="updated fade"><p><strong>Options saved.</strong></p></div> <?php } ?> <div class="wrap" id="share-on-facebook-options"> <h2>Share on Facebook Options</h2> <form method="post" action="<?php echo $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']; ?>"> <fieldset> <legend>Options:</legend> <input type="hidden" name="action" value="save_share_on_facebook_options" /> <table width="100%" cellspacing="2" cellpadding="5" class="editform"> <tr> <th valign="top" scope="row"><label for="link_type">Link Type:</label></th> <td><select name="link_type"> <option value="link" <?php if ($link === "link") echo 'selected="selected"';?>>Link Only</option> <option value="icon" <?php if ($link === "icon") echo 'selected="selected"';?>>Icon Only</option> <option value ="both" <?php if ($link === "both") echo 'selected="selected"';?>>Link and Icon</option> <option value ="button" <?php if ($link === "button") echo 'selected="selected"';?>>Share Button</option> </select></td> </tr> <tr> <th valign="top" scope="row"><label for="insertion_type">Insertion Type:</label></th> <td><select name="insertion_type"> <option value ="auto" <?php if ($insert === "auto") echo 'selected="selected"';?>>Auto</option> <option value ="template"<?php if ($insert === "template") echo 'selected="selected"';?>>Template</option> </select></td> </tr> </table> </fieldset> <p class="submit"> <input type="submit" name="Submit" value="Update Options »" /> </p> </form> </div> <?php } function share_on_facebook_add_options_page() { // Add a new menu under Options: add_options_page('Share on Facebook', 'Share on Facebook', 10, __FILE__, 'share_on_facebook_options_page'); } function share_on_facebook_save_options() { // create array $share_on_facebook_options["link_type"] = $_POST["link_type"]; $share_on_facebook_options["insertion_type"] = $_POST["insertion_type"]; update_option('share_on_facebook_options', $share_on_facebook_options); $options_saved = true; } add_action('admin_menu', 'share_on_facebook_add_options_page'); if (!get_option('share_on_facebook_options')){ // create default options $share_on_facebook_options["link_type"] = 'link'; $share_on_facebook_options["insertion_type"] = 'auto'; update_option('share_on_facebook_options', $share_on_facebook_options); } if ($_POST['action'] == 'save_share_on_facebook_options'){ share_on_facebook_save_options(); } ?>
https://www.ads-software.com/extend/plugins/share-on-facebook/
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘[Plugin: Share On Facebook] Share on Facebook plugin code’ is closed to new replies.