diff --git a/README.md b/README.md index fa61d5e..9b0833f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,24 @@ -# kinderland-mu-plugins +h1. Must use plugins für https://www.kinderlandwien.at -Must use Plugins für https://www.kinderlandwien.at - -Dev Instanz: https://kinderlandwien.lanandmedia.org \ No newline at end of file +Dev Instanz: https://kinderlandwien.lanandmedia.org + +h2. Must use plugins load + +WordPress does not automagically looks into folders here +@see https://wordpress.org/support/article/must-use-plugins/ +@see https://premium.wpmudev.org/blog/why-you-shouldnt-use-functions-php/ + +```require WPMU_PLUGIN_DIR . '/socos-io-adaptions/socos-io-adaptions.php';``` + +h2. socos.io adaptions + +* Plugin name: socos.io adaptions +* Plugin URI: https://www.netzgestaltung.at +* Author: Thomas Fellinger +* Author URI: https://www.netzgestaltung.at +* Version: 0.1 +* Description: Custom website functions +* License: GPL v2 +* Copyright 2020 Thomas Fellinger (email : office@netzgestaltung.at) + +Adds usefull functions to the website diff --git a/sandbox-adaptions.php b/sandbox-adaptions.php new file mode 100644 index 0000000..ad0773b --- /dev/null +++ b/sandbox-adaptions.php @@ -0,0 +1,32 @@ +. + * + * Must use plugins load + * WordPress does not automagically looks into folders here + * @see https://wordpress.org/support/article/must-use-plugins/ + * @see https://premium.wpmudev.org/blog/why-you-shouldnt-use-functions-php/ + */ + require WPMU_PLUGIN_DIR . '/socos-io-adaptions/socos-io-adaptions.php'; +?> + diff --git a/sandbox-adaptions/admin/style.css b/sandbox-adaptions/admin/style.css new file mode 100644 index 0000000..78ed8ce --- /dev/null +++ b/sandbox-adaptions/admin/style.css @@ -0,0 +1,44 @@ +#postbox-container-2 .postbox .inside{ + display:flex; + flex-flow:row wrap; + justifiy-content:space-between; + padding-left:0; + padding-right:0; +} +#postbox-container-2 #richtext_excerpt_editor_metabox .inside{ + display:block; +} +#postexcerpt.postbox .inside, +#postbox-container-2 .form-field{ + padding-left:12px; + padding-right:12px; +} +#postbox-container-2 .jcf_edit_field{ + width:50%; +} +#jcf_fieldset-masse .jcf_edit_field{ + width:33%; +} +.jcf-get-shortcode{ + margin-right:0; +} +#postbox-container-2 .form-field input, +#postbox-container-2 .form-field textarea{ + box-model:border-box; + width:100%; +} +div.jcf_edit_field div.checkboxes-set label{ + float:none; + display:block; + width:auto; +} +div.jcf_edit_field div.checkboxes-set{ +} +.jcf_edit_field .wp-editor-tools{ + width:75%; +} +/* To remove any br or p tags that the WordPress editor likes to throw in */ +figure img + br, +figure a + br, +figure img + p, +figure a + p { display: none; } diff --git a/sandbox-adaptions/sandbox-adaptions.php b/sandbox-adaptions/sandbox-adaptions.php new file mode 100644 index 0000000..d1cfb6b --- /dev/null +++ b/sandbox-adaptions/sandbox-adaptions.php @@ -0,0 +1,957 @@ +. + */ + +define('SOCOS_IO_ADAPTIONS_PATH', plugin_dir_path(__FILE__)); +define('SOCOS_IO_ADAPTIONS_URL', plugin_dir_url(__FILE__)); + +/** + * Ajax hooks + * ========== + */ +// user edit ajax +add_action('wp_ajax_user_edit', 'sandbox_ajax_user_edit'); + +/** + * Plugin setup hook + * ================ + */ +add_action('plugins_loaded', 'sandbox_setup_site'); + + +function sandbox_setup_site() { + add_post_type_support('page', 'excerpt'); + + // init image sizes + sandbox_image_sizes(); + + // init custom widgets + add_action('widgets_init', 'sandbox_widgets_init'); + add_action('init', 'sandbox_disable_emojis'); + + // load admin styles + add_action('admin_head', 'sandbox_admin_styles_load'); + + // quick fix for https://wordpress.org/support/topic/jqeuery-error-live-is-not-a-function/ + add_action('admin_enqueue_scripts', 'sandbox_jcf_admin_fix'); + + if ( !is_admin() ) { + // add usefull classNames + add_filter('body_class', 'sandbox_body_class'); + add_filter('post_class', 'sandbox_post_class'); + add_filter('nav_menu_css_class', 'sandbox_menu_item_class', 10, 2); + add_filter('the_category', 'sandbox_category_class'); + + // adds login and out links to menus "site-loggedin" and "site-loggedout" + add_filter('wp_nav_menu_items', 'sandbox_nav_menu_items', 10, 2); + + // Custom login screen + add_filter('login_headerurl', 'sandbox_login_headerurl'); + add_filter('login_headertext', 'sandbox_login_headertext'); + add_filter('login_enqueue_scripts', 'sandbox_login_enqueue_scripts'); + + // Change Wordpress email subject + add_filter('wp_mail_from_name', 'sandbox_mail_from_name'); + + // remove lazy block wrapper container markup in frontend + add_filter( 'lzb/block_render/allow_wrapper', '__return_false' ); + + // Admin pages related stuff + } else { + // add usefull classNames + add_filter('admin_body_class', 'sandbox_admin_body_class'); + } + + // plugin integrations + add_filter('wpcf7_form_tag_data_option', 'sandbox_listo_ordered', 11, 1); + // listo uses an iso3 country list + // country iso2 to iso3: + // https://github.com/i-rocky/country-list-js/blob/master/data/iso_alpha_3.json + // all countries and phone-codes (iso2): + // https://github.com/ChromaticHQ/intl-tel-input/blob/master/src/js/data.js + + // filter values of form tags to email + add_filter( 'cf7sg_mailtag_email-updates', 'sandbox_cf7_mailtag_email_updates', 10, 3); + + // remove layout from "cf7 smart grid plugin" + add_action('smart_grid_register_styles', 'sandbox_smart_grid_register_styles'); + + + // use really simple captcha in contact form 7 + // add_filter('wpcf7_use_really_simple_captcha', '__return_true'); + +} + +// Check if function "wp_body_open" exits, if not create it +if ( !function_exists('wp_body_open') ) { + function wp_body_open() { + do_action('wp_body_open'); + } +} + +// add custom image sizes +function sandbox_image_sizes() { + $image_sizes = sandbox_get_image_sizes(); + + if ( !empty( $image_sizes ) ) { + foreach ( $image_sizes as $id => $size ) { + add_image_size( $id, $size['args']['w'], $size['args']['h'], $size['args']['crop'] ); + } + } +} + +// custom image sizes settings +function sandbox_get_image_sizes() { + + $sizes = array(); + $crop = true; + $ratio = '16_9'; + $ratio_opts = explode("_", $ratio); + + // Standard (with sidebar) + $width = 805; + $height = absint($width*$ratio_opts[1]/$ratio_opts[0]); + $sizes['sandbox-default'] = array('title' => __('Standard (with sidebar)', 'sandbox'), 'args' => array('w' => $width, 'h' => $height, 'crop' => $crop)); + + //Full width (no sidebar) + $width = 1090; + $height = absint($width*$ratio_opts[1]/$ratio_opts[0]); + $sizes['sandbox-wide'] = array('title' => __('Full Width (no sidebar)', 'sandbox'), 'args' => array('w' => $width, 'h' => $height, 'crop' => $crop)); + + //Hero image + $width = 1920; + $height = absint($width*$ratio_opts[1]/$ratio_opts[0]); + $sizes['sandbox-hero'] = array('title' => __('Hero image', 'sandbox'), 'args' => array('w' => $width, 'h' => $height, 'crop' => $crop)); + + return $sizes; +} + +// Custom login screen - home url +function sandbox_login_headerurl(){ + return home_url(); +} + +// Custom login screen - header text +function sandbox_login_headertext(){ + return wp_get_document_title(); +} + +// Custom login screen - login style +function sandbox_login_enqueue_scripts(){ + // loads style/images from template folder + wp_register_style('sandbox_login', get_template_directory_uri() . '/css/login.css'); + wp_enqueue_style('sandbox_login'); +} + +// init custom widgets +function sandbox_widgets_init(){; + register_widget('sandbox_faq_nav_widget'); + // register_widget('sandbox_events_widget'); + // register_widget('sandbox_social_widget'); + // register_widget('sandbox_slider_widget'); +} + +/** + * Disable the emoji's + * https://kinsta.com/knowledgebase/disable-emojis-wordpress/ + */ +function sandbox_disable_emojis(){ + remove_action('wp_head', 'print_emoji_detection_script', 7 ); + remove_action('admin_print_scripts', 'print_emoji_detection_script'); + remove_action('wp_print_styles', 'print_emoji_styles'); + remove_action('admin_print_styles', 'print_emoji_styles'); + remove_filter('the_content_feed', 'wp_staticize_emoji'); + remove_filter('comment_text_rss', 'wp_staticize_emoji'); + remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); + add_filter('tiny_mce_plugins', 'disable_emojis_tinymce'); + add_filter('wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 ); +} + +/** + * Filter function used to remove the tinymce emoji plugin. + * + * @param array $plugins + * @return array Difference betwen the two arrays + */ +function disable_emojis_tinymce($plugins) { + if ( is_array($plugins) ) { + return array_diff($plugins, array('wpemoji')); + } else { + return array(); + } +} + +/** + * Remove emoji CDN hostname from DNS prefetching hints. + * + * @param array $urls URLs to print for resource hints. + * @param string $relation_type The relation type the URLs are printed for. + * @return array Difference betwen the two arrays. + */ +function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) { + if ( 'dns-prefetch' == $relation_type ) { + /** This filter is documented in wp-includes/formatting.php */ + $emoji_svg_url = apply_filters('emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/'); + $urls = array_diff( $urls, array( $emoji_svg_url ) ); + } + return $urls; +} + +// adds usefull body classNames +// @param $classes array +function sandbox_body_class($classes){ + $classNames = array(); + $post = get_post(); + $parents = get_post_ancestors($post); + $slug = sandbox_get_the_slug(); + $post_type = get_post_type(); + + $classNames[] = $post_type . '-' . $slug; + + if ( is_home() ) { + $classNames[] = 'archive'; + } + if ( is_active_sidebar('content-before') && is_active_sidebar('content-after') ) { + $classNames[] = 'has-content-sidebars'; + } else if ( is_active_sidebar('content-before') || is_active_sidebar('content-after') ) { + $classNames[] = 'has-content-sidebar'; + if ( is_active_sidebar('content-before') ) { + $classNames[] = 'has-sidebar-content-before'; + } else if ( is_active_sidebar('content-after') ) { + $classNames[] = 'has-sidebar-content-after'; + } + } + /* use for parent pages as sections + if ( !empty($parents) ) { + $parents[] = $post->ID; + foreach ( $parents as $parentID ) { + if ( $parentID === 8 ) { + $classNames[] = 'section-you-name-it'; + } + } + } + */ + // echo var_dump($classes); + return array_merge( $classes, $classNames ); +} + +// add usefull classNames +// @param $classes string +function sandbox_admin_body_class($classes){ + $classNames = ''; + $screen = get_current_screen(); + + if ( $screen->base === 'post' && $screen->post_type === 'page' ) { + $page_template = get_post_meta(get_the_ID(), '_wp_page_template', true); + $classNames .= ' used-template-' . esc_attr(str_replace('.php', '', $page_template)); + } + return $classes . ' ' . $classNames; +} + +// add custom styles for admin section +function sandbox_admin_styles_load(){ + wp_register_style('sandbox_admin', SOCOS_IO_ADAPTIONS_URL . '/admin/style.css'); + wp_enqueue_style('sandbox_admin'); +} + +function sandbox_jcf_admin_fix(){ + $screen = get_current_screen(); + if ( in_array($screen->id, array('settings_page_jcf_admin', 'settings_page_jcf_fieldset_index')) ) { + wp_enqueue_script('jquery-migrate'); + } +} + +// adds usefull post classNames +function sandbox_post_class($classes){ + $classNames = array(); + if ( !has_post_thumbnail() ) { + $classNames[] = 'no-post-thumbnail'; + } + return array_merge($classes, $classNames); +} + +// adds usefull menu-item classNames +function sandbox_menu_item_class($classes, $item){ + + // Add slugs to menu-items + if ('category' == $item->object ) { + $category = get_category( $item->object_id ); + $classes[] = 'category-' . $category->slug; + } else if ('format' == $item->object ){ + $format = get_term($item->object_id); + $classes[] = 'format-' . $format->slug; + } + return $classes; +} + +// adds usefull category classNames +function sandbox_category_class($thelist){ + $categories = get_the_category(); + + if ( !$categories || is_wp_error($categories) ) { + return $thelist; + } + $output = '
+ + +
'faq', + 'posts_per_page' => -1, + 'fields' => 'ids', + 'meta_query' => array( + 'relation' => 'OR', + array( + 'key' => '_hide', + 'value' => 1, + 'compare' => 'NOT LIKE', + ), + array( + 'key' => '_hide', + 'value' => 'bug #23268', + 'compare' => 'NOT EXISTS', + ) + ), + )); + $topic_term_objects = get_terms(array( + 'taxonomy' => 'topic', + 'object_ids' => $faq_ids, + 'orderby' => 'order', // needs plugin https://github.com/stuttter/wp-term-order/ + 'order' => 'ASC', + )); + + if ( !empty($topic_term_objects) && !is_wp_error($topic_term_objects) ) { + echo $before_widget; + + if ( $widget_title ) { + echo $before_title . $widget_title . $after_title; + } + echo '