tweaks.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. <?php
  2. remove_action('wp_head', 'index_rel_link' );
  3. remove_action('wp_head', 'rel_canonical');
  4. remove_action('wp_head', 'start_post_rel_link', 10, 0 );
  5. remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
  6. remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );
  7. remove_action('wp_head', 'parent_post_rel_link', 10, 0 );
  8. remove_action('wp_head', 'rsd_link');
  9. remove_action('wp_head', 'wlwmanifest_link');
  10. remove_action('wp_head', 'wp_generator');
  11. remove_action('wp_head', 'feed_links_extra', 3 );
  12. remove_action('wp_head', 'feed_links', 2 );
  13. remove_action('wp_head', 'wp_oembed_add_discovery_links', 10, 0 );
  14. remove_action('wp_head', 'wp_oembed_add_host_js', 10, 0 );
  15. function dw_remove_wp_ver_css_js( $src ) {
  16. if ( strpos( $src, 'ver=' ) )
  17. $src = remove_query_arg( 'ver', $src );
  18. return $src;
  19. }
  20. add_filter( 'style_loader_src', 'dw_remove_wp_ver_css_js', 9999 );
  21. add_filter( 'script_loader_src', 'dw_remove_wp_ver_css_js', 9999 );
  22. // Disable use XML-RPC
  23. add_filter( 'xmlrpc_enabled', '__return_false' );
  24. // Disable X-Pingback to header
  25. add_filter( 'wp_headers', 'disable_x_pingback' );
  26. function disable_x_pingback( $headers ) {
  27. unset( $headers['X-Pingback'] );
  28. return $headers;
  29. }
  30. /*
  31. add_action( 'admin_head', 'dw_hide' );
  32. function dw_hide() {
  33. ?>
  34. <style type="text/css" media="screen">
  35. #footer {display:none;}
  36. #contextual-help-link-wrap {display: none;}
  37. #wpadminbar {display: none;}
  38. .edit-post-header {margin-top:-30px;}
  39. .edit-post-sidebar {margin-top:-30px;}
  40. body.admin-bar #wpcontent, body.admin-bar #adminmenu {padding-top:0;}
  41. #wp-content-editor-tools{top:0 !important;position:relative!important;}
  42. #ed_toolbar{top:0px !important;}
  43. html.wp-toolbar{padding-top:0;}
  44. #postexcerpt p {display: none;}
  45. </style>
  46. <?php }
  47. */
  48. function disable_emojis_tinymce( $plugins ) {
  49. if ( is_array( $plugins ) ) {
  50. return array_diff( $plugins, array( 'wpemoji' ) );
  51. } else {
  52. return array();
  53. }
  54. }
  55. function disable_emojis() {
  56. remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
  57. remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
  58. remove_action( 'wp_print_styles', 'print_emoji_styles' );
  59. remove_action( 'admin_print_styles', 'print_emoji_styles' );
  60. remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
  61. remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
  62. remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
  63. add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
  64. add_filter( 'emoji_svg_url', '__return_false' );
  65. }
  66. add_action( 'init', 'disable_emojis' );
  67. function custom_excerpt_length( $length ) {
  68. return 20;
  69. }
  70. add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
  71. add_filter('wp_mail_from', 'dw_fromemail');
  72. function dw_fromemail($email) {
  73. $wpfrom = get_option('admin_email');
  74. return $wpfrom;
  75. }
  76. add_filter('wp_mail_from_name', 'dw_fromname');
  77. function dw_fromname($email){
  78. $wpfrom = get_option('blogname');
  79. return $wpfrom;
  80. }
  81. add_filter( 'embed_oembed_html', 'dw_oembed_filter', 10, 4 ) ;
  82. function dw_oembed_filter($html, $url, $attr, $post_ID) {
  83. $return = '<div class="video-container">'.$html.'</div>';
  84. $return = str_replace('frameborder="0" allowfullscreen', 'style="border:none"', $return);
  85. return $return;
  86. }
  87. add_filter( 'embed_oembed_html', 'dw_embed_oembed_html' );
  88. function dw_embed_oembed_html( $html ) {
  89. return preg_replace( '@src="https?:@', 'src="', $html );
  90. }
  91. add_action( 'admin_menu', 'daw_is_online_add_admin_menu' );
  92. add_action( 'admin_init', 'daw_is_online_settings_init' );
  93. function daw_is_online_add_admin_menu( ) {
  94. add_options_page( 'DW Status', 'DAW Online', 'manage_options', 'daw_is_online', 'daw_is_online_options_page' );
  95. }
  96. function daw_is_online_settings_init( ) {
  97. register_setting( 'dwstatus', 'daw_is_online_settings' );
  98. add_settings_section('daw_is_online_pluginPage_section', __( 'DAW Online', 'wordpress' ), 'daw_is_online_settings_section_callback', 'dwstatus');
  99. add_settings_field( 'daw_is_online_select_field_0', __( 'Am I Online ?', 'wordpress' ), 'daw_is_online_select_field_0_render', 'dwstatus', 'daw_is_online_pluginPage_section' );
  100. }
  101. function daw_is_online_select_field_0_render( ) {
  102. $options = get_option( 'daw_is_online_settings' ); ?>
  103. <select name='daw_is_online_settings[daw_is_online_select_field_0]'>
  104. <option value='1' <?php selected( $options['daw_is_online_select_field_0'], 1 ); ?>>Yes</option>
  105. <option value='2' <?php selected( $options['daw_is_online_select_field_0'], 2 ); ?>>No</option>
  106. </select>
  107. <?php }
  108. function daw_is_online_settings_section_callback( ) {
  109. echo __( 'This sets my online status', 'wordpress' );
  110. }
  111. function daw_is_online_options_page( ) { ?>
  112. <form action='options.php' method='post'>
  113. <?php settings_fields( 'dwstatus' );
  114. do_settings_sections( 'dwstatus' );
  115. submit_button(); ?>
  116. </form>
  117. <?php }
  118. function dw_online_get_status() {
  119. $dw_status = get_option('daw_is_online_settings');
  120. if( $dw_status['daw_is_online_select_field_0'] == '1' ) {
  121. wp_enqueue_style( 'message', get_template_directory_uri() . '/css/messenger.css');
  122. ?>
  123. <script type="text/javascript">function txt_dave(){$.ajax({url:"https://davidawindham.com/wha/phony/sms.php",dataType:"json",success:function(){}})}$(function(){var a;a=0,Messenger.options={extraClasses:"messenger-fixed messenger-on-bottom messenger-on-left",theme:"flat"};var b;b=Messenger().post({message:"I'm Currently Online",type:'success',actions:{cancel:{label:"Connect",delay:60,action:function(){txt_dave();var c;c=Messenger().run({errorMessage:"Please wait a moment while I get connected with you.",successMessage:"Connecting",action:function(c){return b.hide(),++a<2?c.error({status:500,readyState:0,responseText:0}):(window.location.href="http://chat.davidawindham.com",b.update({message:"Redirect to Chat",hideAfter:20,type:"success",actions:!1}))}})}}},retry:{label:"No Thanks",action:function(){return b.update({message:"Maybe Next Time",hideAfter:1,type:"error",actions:!1})}}})});</script>
  124. <?php }
  125. }
  126. function dw_online_get_chat() {
  127. $dw_status = get_option('daw_is_online_settings');
  128. if( $dw_status['daw_is_online_select_field_0'] == '1' ) { ?>
  129. <script type="text/javascript">
  130. Messenger.options = {extraClasses: "messenger-fixed messenger-on-bottom messenger-on-left",theme: "flat"};var i;i = 0;
  131. $(function(){
  132. var msg_return;
  133. msg_return = Messenger().run({
  134. id: 'one',
  135. errorMessage: 'Looking for David...',
  136. action: function(opts) {if (++i < 2) {get_dave();return opts.error({status: 500,readyState: 0,responseText: 0});}}});});
  137. function get_dave() {$(function poll() {var x = 0; var countTimer = setInterval(function () {if(x > 5){clearInterval(countTimer)}else if(x == 5){dave_not_available()}else{var URLchatAPI = "http://code.davidawindham.com:8080/status";var request = $.ajax({url: URLchatAPI,dataType: 'json',cache: false, success: function (data) {online = data.online;if(online=='yes') {$('.chat').modal('show');x = x+5;};if (online=='no') {dave_connecting();};},error: function ( xhr, tStatus, err ) {dave_error();x = x+5;}});x++;}}, 5000);});}
  138. function dave_connecting(){var y;y = 0;var msg_waiting; msg_waiting = Messenger().run({id: 'one',hideAfter: 4,errorMessage: 'Waiting on David...',action: function(opts) {if (++y < 2) {get_dave();return opts.error({status: 500,readyState: 0,responseText: 0});}}});}
  139. function dave_not_available(){var msg_error; msg_error = Messenger().post({message: 'Sorry, but I am busy.',type: 'error',id: 'one',showCloseButton: true,actions:{cancel: {label: 'Leave me a message',action: function(){window.location.href = '../';}}}});}
  140. function dave_error(){var msg_error; msg_error = Messenger().post({message: 'Oops. Something has gone wrong.',type: 'error',id: 'one',showCloseButton: true,actions:{cancel: {label: 'Leave me a message',action: function(){window.location.href = '../';}}}});}
  141. $(function() {if (window.location.hash.indexOf("chat") !== -1) {$('.chat').modal('show');}});
  142. </script>
  143. <?php }
  144. }
  145. function dw_deliver_form_mail() {
  146. if ( isset( $_POST['dw-contact'] ) ) {
  147. $fname = sanitize_text_field( $_POST["dw-fname"] );
  148. $lname = sanitize_text_field( $_POST["dw-lname"] );
  149. $email = sanitize_email( $_POST["dw-email"] );
  150. $subject = sanitize_text_field( $_POST["dw-org"] );
  151. $message = esc_textarea( $_POST["dw-message"] );
  152. $to = get_option( 'admin_email' );
  153. $headers = "From: $fname $lname <$email>" . "\r\n";
  154. if ( wp_mail( $to, $subject, $message, $headers ) ) {
  155. echo '<div class="alert alert-success" role="alert">';
  156. echo '<p>Thank you. I will be in touch.</p>';
  157. echo '</div>';
  158. }
  159. else {
  160. echo '<div class="alert alert-danger" role="alert">';
  161. echo '<p>Error, please try again</p>';
  162. echo '</div>';
  163. }
  164. }
  165. }
  166. add_shortcode('dwsearch', 'get_search_form');
  167. function doctype_opengraph($output) {
  168. return $output . '
  169. xmlns:og="http://opengraphprotocol.org/schema/"
  170. xmlns:fb="http://www.facebook.com/2008/fbml"';
  171. }
  172. add_filter('language_attributes', 'doctype_opengraph');
  173. function dw_opengraph() {
  174. global $post;
  175. if(is_single()) {
  176. if(has_post_thumbnail($post->ID)) {
  177. $img_src = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), 'full');
  178. $img_src = $img_src[0];
  179. } else {
  180. $img_src = get_stylesheet_directory_uri() . '/img/opengraph_image.jpg';
  181. }
  182. if($excerpt = $post->post_excerpt) {
  183. $excerpt = strip_tags($post->post_excerpt);
  184. $excerpt = str_replace("", "'", $excerpt);
  185. } else {
  186. $excerpt = get_bloginfo('description');
  187. }
  188. ?>
  189. <meta property="og:title" content="<?php echo the_title(); ?>"/>
  190. <meta property="og:description" content="<?php echo $excerpt; ?>"/>
  191. <meta property="og:type" content="article"/>
  192. <meta property="og:url" content="<?php echo the_permalink(); ?>"/>
  193. <meta property="og:site_name" content="<?php echo get_bloginfo(); ?>"/>
  194. <meta property="og:image" content="<?php echo $img_src; ?>"/>
  195. <meta property="fb:app_id" content="203136806559589" />
  196. <meta name="twitter:site" content="@windhamdavid">
  197. <meta name="twitter:creator" content="@windhamdavid">
  198. <meta name="twitter:title" content="<?php echo the_title(); ?>">
  199. <meta name="twitter:description" content="<?php echo $excerpt; ?>">
  200. <meta name="twitter:image" content="<?php echo $img_src; ?>">
  201. <?php
  202. } else {
  203. return;
  204. }
  205. $content = do_shortcode( apply_filters( 'the_content', $post->post_content ) );
  206. $media_url = get_post_meta( get_the_ID(), 'media', true );
  207. $media = get_media_embedded_in_content( $content );
  208. if( !empty($media) ) {
  209. $video_url = $media[0];
  210. ?>
  211. <meta property="og:video" content="<?php echo $media_url; ?>" />
  212. <meta property="og:video:secure_url" content="<?php echo $media_url; ?>" />
  213. <meta property="og:video:width" content="1280" />
  214. <meta property="og:video:height" content="720" />
  215. <meta property="og:video:type" content="video/mp4" />
  216. <meta name="twitter:card" content="player">
  217. <meta name="twitter:player" content="<?php echo get_permalink();?>container/" />
  218. <meta name="twitter:player:width" content="1280" />
  219. <meta name="twitter:player:height" content="720" />
  220. <meta name="twitter:player:stream" content="<?php echo $media_url; ?>" />
  221. <meta name="twitter:player:stream:content_type" content="video/mp4" />
  222. <?php
  223. } else {
  224. ?>
  225. <meta name="twitter:card" content="summary_large_image">
  226. <?php
  227. }
  228. }
  229. add_action('wp_head', 'dw_opengraph', 5);
  230. function dw_read_container_endpoint(){
  231. add_rewrite_endpoint( 'container', EP_PERMALINK);
  232. }
  233. add_action( 'init', 'dw_read_container_endpoint' );
  234. function dw_read_container_template( $template = '' ) {
  235. global $wp_query;
  236. if( ! array_key_exists( 'container', $wp_query->query_vars ) ) return $template;
  237. $template = locate_template( 'single-container.php' );
  238. return $template;
  239. }
  240. add_filter( 'single_template', 'dw_read_container_template' );
  241. function dw_video_embed( $attr, $content='' ) {
  242. if ( ! isset( $attr['poster'] ) && has_post_thumbnail() ) {
  243. $poster = get_post_meta( get_the_ID(), 'media-poster', true );
  244. $attr['poster'] = $poster;
  245. }
  246. return wp_video_shortcode( $attr, $content );
  247. }
  248. add_shortcode( 'video', 'dw_video_embed' );
  249. ?>