functions.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <?php
  2. function gwp24_styles() {
  3. wp_enqueue_style(
  4. 'gwp-style',
  5. get_stylesheet_uri(),
  6. [],
  7. wp_get_theme()->get( 'Version' )
  8. );
  9. }
  10. add_action( 'wp_enqueue_scripts', 'gwp24_styles' );
  11. /***********************************************************
  12. ###################### BrowserSync #########################
  13. ************************************************************/
  14. function add_cors_http_header(){
  15. header('Access-Control-Allow-Origin: https://gwp.ovid:333');
  16. header('Access-Control-Allow-Credentials: true');
  17. header('Access-Control-Allow-Headers: X-WP-Nonce', false );
  18. }
  19. add_action('init','add_cors_http_header');
  20. function gwp24_browsersync_save() {
  21. $args = [
  22. 'blocking' => false,
  23. 'sslverify' => false
  24. ];
  25. $request = wp_remote_get('https://gwp.ovid:333/__browser_sync__?method=reload', $args);
  26. }
  27. add_action('rest_after_insert_page', 'gwp24_browsersync_save', 10, 3);
  28. add_action('rest_after_insert_post', 'gwp24_browsersync_save', 10, 3);
  29. add_action('customize_save_after', 'gwp24_browsersync_save', 10, 3);
  30. add_action('wp_update_nav_menu', 'gwp24_browsersync_save', 10, 3);
  31. add_action('updated_option', 'gwp24_browsersync_save', 10, 3);
  32. /***********************************************************
  33. ######################## Old Site ##########################
  34. ************************************************************/
  35. wp_enqueue_style( 'site-css', get_template_directory_uri() . '/css/site.css');
  36. wp_enqueue_script ( 'site-js', get_template_directory_uri() . '/js/site.js' );
  37. remove_theme_support( 'block-templates' );
  38. add_theme_support( 'block-template-parts' );
  39. //remove_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles' );
  40. //remove_action( 'wp_footer', 'wp_enqueue_global_styles', 1 );
  41. add_action( 'init', 'dwp23_disable_emojis' );
  42. function dwp23_disable_emojis() {
  43. remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
  44. remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
  45. remove_action( 'wp_print_styles', 'print_emoji_styles' );
  46. remove_action( 'admin_print_styles', 'print_emoji_styles' );
  47. remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
  48. remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
  49. remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
  50. add_filter( 'emoji_svg_url', '__return_false' );
  51. }
  52. /***********************************************************
  53. ######################## Editor ############################
  54. ************************************************************/
  55. add_theme_support('disable-custom-colors');
  56. add_action( 'after_setup_theme', 'gwp24_add_editor_styles' );
  57. function gwp24_add_editor_styles() {
  58. add_theme_support( 'editor-styles' );
  59. add_editor_style([
  60. 'style.css',
  61. 'style-editor.css'
  62. ]);
  63. }
  64. add_action( 'enqueue_block_editor_assets', 'gwp24_block_styles' );
  65. function gwp24_block_styles(){
  66. wp_enqueue_style(
  67. 'gwp24-css',
  68. get_stylesheet_directory_uri() . '/style-editor.css',
  69. array( 'wp-edit-blocks' ),
  70. time()
  71. );
  72. }
  73. add_action( 'admin_enqueue_scripts', 'gwp24_admin_styles' );
  74. function gwp24_admin_styles() {
  75. wp_enqueue_style( 'style-editor', get_template_directory_uri().'/style-editor.css' );
  76. }
  77. /***********************************************************
  78. ######################### Admin ############################
  79. ************************************************************/
  80. add_filter('admin_title', 'gwp24_admin_title', 10, 2);
  81. function gwp24_admin_title($admin_title, $title) {
  82. return $title .' - '. get_bloginfo('name');
  83. }
  84. add_filter ('update_footer', 'gwp24_footer_ver', 999);
  85. function gwp24_footer_ver ($default) {
  86. return ''. get_bloginfo( 'version' );
  87. }
  88. add_filter ('admin_footer_text', 'gwp24_footer_filter');
  89. function gwp24_footer_filter ($default) {
  90. return '';
  91. }
  92. add_action('admin_head', 'mytheme_remove_help_tabs');
  93. function mytheme_remove_help_tabs() {
  94. $screen = get_current_screen();
  95. $screen->remove_help_tabs();
  96. }
  97. add_action( 'admin_head-profile.php', 'gwp24_remove_admin_color' );
  98. function gwp24_remove_admin_color() {
  99. remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
  100. }
  101. add_action( 'init', 'gwp24_admin_post_labels' );
  102. function gwp24_admin_post_labels() {
  103. global $wp_post_types;
  104. $labels = &$wp_post_types['post']->labels;
  105. $labels->name = 'News';
  106. $labels->singular_name = 'News';
  107. $labels->add_new = 'Add News';
  108. $labels->add_new_item = 'Add News';
  109. $labels->edit_item = 'Edit News';
  110. $labels->new_item = 'News';
  111. $labels->view_item = 'View News';
  112. $labels->search_items = 'Search News';
  113. $labels->not_found = 'No News found';
  114. $labels->not_found_in_trash = 'No News found in Trash';
  115. $labels->all_items = 'All News';
  116. $labels->menu_name = 'News';
  117. $labels->name_admin_bar = 'News';
  118. }
  119. /***********************************************************
  120. ####################### Admin Bar ##########################
  121. ************************************************************/
  122. add_filter( 'show_admin_bar', '__return_false' );
  123. add_action( 'admin_bar_menu', 'gwp24_remove_adminbar', 999 );
  124. function gwp24_remove_adminbar( $wp_admin_bar ) {
  125. $wp_admin_bar->remove_node( 'wp-logo' );
  126. $wp_admin_bar->remove_node( 'updates' );
  127. $wp_admin_bar->remove_menu('comments');
  128. $wp_admin_bar->remove_menu('customize');
  129. $wp_admin_bar->remove_menu('new-content');
  130. $wp_admin_bar->remove_menu( 'edit' );
  131. $wp_admin_bar->remove_menu( 'new-user' );
  132. $wp_admin_bar->remove_menu( 'new-post' );
  133. $wp_admin_bar->remove_menu( 'new-page' );
  134. $wp_admin_bar->remove_node( 'new-media' );
  135. $wp_admin_bar->remove_node( 'view-site' );
  136. }
  137. add_filter( 'admin_bar_menu', 'gwp24_replace_wordpress_howdy', 25 );
  138. function gwp24_replace_wordpress_howdy( $wp_admin_bar ) {
  139. $account = $wp_admin_bar->get_node('my-account');
  140. $newtext = str_replace( 'Howdy,', '', $account->title );
  141. $wp_admin_bar->add_node( array(
  142. 'id' => 'my-account',
  143. 'title' => $newtext,
  144. ));
  145. }
  146. /* for email */
  147. add_filter( 'gettext', 'gwp24_change_howdy_text', 10, 2 );
  148. function gwp24_change_howdy_text( $translation, $original ) {
  149. if( 'Howdy, %1$s' == $original )
  150. $translation = '%1$s';
  151. return $translation;
  152. }
  153. /***********************************************************
  154. #################### Admin Menus ###########################
  155. ************************************************************/
  156. add_action('admin_menu', function () {
  157. remove_menu_page('edit-comments.php');
  158. });
  159. add_filter( 'custom_menu_order', 'gwp24_menu_order' );
  160. add_filter( 'menu_order', 'gwp24_menu_order' );
  161. function gwp24_menu_order( $menu_order ) {
  162. if (!$menu_order) return true;
  163. return array(
  164. 'index.php',
  165. 'separator1',
  166. 'edit.php?post_type=page',
  167. 'edit.php',
  168. 'edit-comments.php',
  169. 'separator2',
  170. 'upload.php',
  171. 'separator-last',
  172. 'theme-settings',
  173. 'themes.php',
  174. 'plugins.php',
  175. 'tools.php',
  176. 'users.php'
  177. );
  178. }
  179. add_action( 'admin_menu', 'gwp24_remove_admin_pages', 99 );
  180. function gwp24_remove_admin_pages() {
  181. global $current_user;
  182. $user_id = get_current_user_id();
  183. if($user_id != '0') {
  184. remove_submenu_page('themes.php', 'themes-editor.php');
  185. remove_submenu_page( 'themes.php', 'customize.php?return=' . urlencode($_SERVER['SCRIPT_NAME']));
  186. remove_submenu_page( 'themes.php', 'themes.php' );
  187. remove_submenu_page( 'themes.php', 'theme-editor.php' );
  188. remove_submenu_page( 'themes.php', 'theme_options' );
  189. remove_menu_page('plugins.php');
  190. remove_menu_page('tools.php');
  191. remove_menu_page('options-general.php');
  192. remove_menu_page('gutenberg');
  193. }
  194. }
  195. /***********************************************************
  196. ###################### Dashboard ###########################
  197. ************************************************************/
  198. add_action( 'wp_dashboard_setup', 'gwp24_disable_dashboard_items' );
  199. function gwp24_disable_dashboard_items() {
  200. remove_action('admin_notices', 'update_nag');
  201. remove_action( 'welcome_panel', 'wp_welcome_panel' );
  202. remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
  203. remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
  204. remove_meta_box('dashboard_site_health', 'dashboard', 'normal');
  205. remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
  206. }
  207. /***********************************************************
  208. ###################### Last Login ##########################
  209. ************************************************************/
  210. add_action( 'wp_login', 'gwp24_login_timestamp', 20, 2 );
  211. function gwp24_login_timestamp( $user_login, $user ) {
  212. update_user_meta( $user->ID, 'last_login', time() );
  213. }
  214. add_filter( 'manage_users_columns', 'gwp24_user_last_login_column' );
  215. function gwp24_user_last_login_column( $columns ) {
  216. $columns['last_login'] = 'Last Login'; // column ID / column Title
  217. return $columns;
  218. }
  219. add_filter( 'manage_users_custom_column', 'gwp24_last_login_column', 10, 3 );
  220. function gwp24_last_login_column( $output, $column_id, $user_id ){
  221. if( $column_id == 'last_login' ) {
  222. $last_login = get_user_meta( $user_id, 'last_login', true );
  223. $date_format = 'j M, Y';
  224. $output = $last_login ? date( $date_format, $last_login ) : '-';
  225. }
  226. return $output;
  227. }
  228. add_filter( 'manage_users_sortable_columns', 'gwp24_sortable_columns' );
  229. function gwp24_sortable_columns( $columns ) {
  230. return wp_parse_args( array(
  231. 'last_login' => 'last_login'
  232. ), $columns );
  233. }
  234. add_action( 'pre_get_users', 'gwp24_sort_last_login_column' );
  235. function gwp24_sort_last_login_column( $query ) {
  236. if( !is_admin() ) { return; }
  237. $orderby = $query->get('orderby');
  238. if( 'last_login' == $orderby ) {
  239. $query->set('meta_key','last_login');
  240. $query->set('orderby','meta_value');
  241. }
  242. return $query;
  243. }
  244. /***********************************************************
  245. ###################### Log in/out ##########################
  246. ************************************************************/
  247. add_filter( 'wp_nav_menu_items', 'gwp24_loginout_menu_link', 10, 2 );
  248. function gwp24_loginout_menu_link( $items, $args ) {
  249. if ($args->theme_location == 'bottom') {
  250. if (is_user_logged_in()) {
  251. $items .= '<li class="nav-item"><a class="navbar-brand" href="'. wp_logout_url() .'"><i class="bi bi-person-circle fs-5"></i></a></li>';
  252. } else {
  253. $items .= '<li class="nav-item"><a class="navbar-brand" href="'. wp_login_url() .'"><i class="bi bi-person-circle fs-5"></i></a></li>';
  254. }
  255. }
  256. return $items;
  257. }
  258. add_action( 'login_enqueue_scripts', 'gwp24_login_logo' );
  259. function gwp24_login_logo() {
  260. $logo_image = wp_get_attachment_image_src( get_theme_mod( 'custom_logo' ), 'full' );
  261. ?>
  262. <style type="text/css">
  263. #login h1 a, .login h1 a {
  264. background-image: url(<?php echo esc_url( $logo_image[0] ); ?>);
  265. }
  266. </style>
  267. <?php }
  268. add_filter( 'login_headerurl', 'gwp24_login_url' );
  269. function gwp24_login_url() { return home_url(); }
  270. add_filter( 'login_headertext', 'gwp24_login_title' );
  271. function gwp24_login_title() { return get_option( 'blogname' ); }
  272. /***********************************************************
  273. ######################## Header ############################
  274. ************************************************************/
  275. add_action( 'init', 'gwp24_cleaner_header' );
  276. function gwp24_cleaner_header() {
  277. remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10);
  278. remove_action('wp_head', 'wlwmanifest_link');
  279. remove_action('wp_head', 'rsd_link');
  280. remove_action('wp_head', 'wp_shortlink_wp_head', 10);
  281. remove_action('wp_head', 'wp_generator');
  282. remove_action('wp_head', 'feed_links_extra', 3 );
  283. remove_action('wp_head', 'feed_links', 2 );
  284. }
  285. /***********************************************************
  286. ####################### Comments ###########################
  287. ************************************************************/
  288. add_filter('comments_open', '__return_false', 20, 2);
  289. add_filter('pings_open', '__return_false', 20, 2);
  290. add_action('admin_init','gwp24_disable_comments');
  291. function gwp24_disable_comments() {
  292. $post_types = get_post_types();
  293. foreach ($post_types as $post_type) {
  294. if(post_type_supports($post_type,'comments')) {
  295. remove_post_type_support($post_type,'comments');
  296. remove_post_type_support($post_type,'trackbacks');
  297. }
  298. }
  299. }