Last active
August 27, 2019 19:43
-
-
Save bdnorris/296ae519bb5b1318d77545634afb151e to your computer and use it in GitHub Desktop.
GF100 Years Gravity Forms
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* _griffith functions and definitions | |
* | |
* @link https://developer.wordpress.org/themes/basics/theme-functions/ | |
* | |
* @package _griffith | |
*/ | |
if ( ! function_exists( '_griffith_setup' ) ) : | |
/** | |
* Sets up theme defaults and registers support for various WordPress features. | |
* | |
* Note that this function is hooked into the after_setup_theme hook, which | |
* runs before the init hook. The init hook is too late for some features, such | |
* as indicating support for post thumbnails. | |
*/ | |
function _griffith_setup() { | |
/* | |
* Make theme available for translation. | |
* Translations can be filed in the /languages/ directory. | |
* If you're building a theme based on _griffith, use a find and replace | |
* to change '_griffith' to the name of your theme in all the template files. | |
*/ | |
load_theme_textdomain( '_griffith', get_template_directory() . '/languages' ); | |
// Add default posts and comments RSS feed links to head. | |
add_theme_support( 'automatic-feed-links' ); | |
/* | |
* Let WordPress manage the document title. | |
* By adding theme support, we declare that this theme does not use a | |
* hard-coded <title> tag in the document head, and expect WordPress to | |
* provide it for us. | |
*/ | |
add_theme_support( 'title-tag' ); | |
/* | |
* Enable support for Post Thumbnails on posts and pages. | |
* | |
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ | |
*/ | |
add_theme_support( 'post-thumbnails' ); | |
// This theme uses wp_nav_menu() in one location. | |
register_nav_menus( array( | |
'menu-1' => esc_html__( 'Primary', '_griffith' ), | |
) ); | |
/* | |
* Switch default core markup for search form, comment form, and comments | |
* to output valid HTML5. | |
*/ | |
add_theme_support( 'html5', array( | |
'search-form', | |
'comment-form', | |
'comment-list', | |
'gallery', | |
'caption', | |
) ); | |
// Set up the WordPress core custom background feature. | |
add_theme_support( 'custom-background', apply_filters( '_griffith_custom_background_args', array( | |
'default-color' => 'ffffff', | |
'default-image' => '', | |
) ) ); | |
// Add theme support for selective refresh for widgets. | |
add_theme_support( 'customize-selective-refresh-widgets' ); | |
/** | |
* Add support for core custom logo. | |
* | |
* @link https://codex.wordpress.org/Theme_Logo | |
*/ | |
add_theme_support( 'custom-logo', array( | |
'height' => 250, | |
'width' => 250, | |
'flex-width' => true, | |
'flex-height' => true, | |
) ); | |
} | |
endif; | |
add_action( 'after_setup_theme', '_griffith_setup' ); | |
/** | |
* Set the content width in pixels, based on the theme's design and stylesheet. | |
* | |
* Priority 0 to make it available to lower priority callbacks. | |
* | |
* @global int $content_width | |
*/ | |
function _griffith_content_width() { | |
// This variable is intended to be overruled from themes. | |
// Open WPCS issue: {@link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1043}. | |
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | |
$GLOBALS['content_width'] = apply_filters( '_griffith_content_width', 640 ); | |
} | |
add_action( 'after_setup_theme', '_griffith_content_width', 0 ); | |
/** | |
* Register widget area. | |
* | |
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar | |
*/ | |
function _griffith_widgets_init() { | |
register_sidebar( array( | |
'name' => esc_html__( 'Sidebar', '_griffith' ), | |
'id' => 'sidebar-1', | |
'description' => esc_html__( 'Add widgets here.', '_griffith' ), | |
'before_widget' => '<section id="%1$s" class="widget %2$s">', | |
'after_widget' => '</section>', | |
'before_title' => '<h2 class="widget-title">', | |
'after_title' => '</h2>', | |
) ); | |
} | |
add_action( 'widgets_init', '_griffith_widgets_init' ); | |
/** | |
* Enqueue scripts and styles. | |
*/ | |
function _griffith_scripts() { | |
wp_enqueue_style( '_griffith-style', get_stylesheet_uri() ); | |
wp_enqueue_style( 'custom', get_template_directory_uri() . '/styles/custom.css' ); | |
wp_enqueue_style( 'source-sans', 'https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,700,900&display=swap' ); | |
// wp_enqueue_script( '_griffith-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20151215', true ); | |
wp_enqueue_script( '_griffith-custom', get_template_directory_uri() . '/js/custom.js', array(), '20190708', true ); | |
wp_enqueue_script( '_griffith-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20151215', true ); | |
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { | |
wp_enqueue_script( 'comment-reply' ); | |
} | |
} | |
add_action( 'wp_enqueue_scripts', '_griffith_scripts' ); | |
/** | |
* Implement the Custom Header feature. | |
*/ | |
require get_template_directory() . '/inc/custom-header.php'; | |
/** | |
* Custom template tags for this theme. | |
*/ | |
require get_template_directory() . '/inc/template-tags.php'; | |
/** | |
* Functions which enhance the theme by hooking into WordPress. | |
*/ | |
require get_template_directory() . '/inc/template-functions.php'; | |
/** | |
* Customizer additions. | |
*/ | |
require get_template_directory() . '/inc/customizer.php'; | |
/** | |
* Load Jetpack compatibility file. | |
*/ | |
if ( defined( 'JETPACK__VERSION' ) ) { | |
require get_template_directory() . '/inc/jetpack.php'; | |
} | |
/* ADDED */ | |
add_theme_support( 'post-thumbnails' ); | |
// List creating for GF | |
// class GF_Field_List extends GF_Field { | |
// public $type = 'list'; | |
// } | |
// GF_Fields::register( new GF_Field_List() ); | |
// CUSTOM REPEATER STUFF FOR GRAVITY FORMS | |
// https://docs.gravityforms.com/repeater-fields/ | |
add_filter( 'gform_form_post_get_meta_1', 'add_my_field' ); | |
function add_my_field( $form ) { | |
// Create a multi-column list field | |
$ingredients = GF_Fields::create( array( | |
'type' => 'list', | |
'id' => 2002, // The Field ID must be unique on the form | |
'formId' => $form['id'], | |
'label' => 'Ingredients', | |
'maxRows' => '20', | |
'enableColumns' => true, | |
'choices' => array( | |
array( | |
'text' => 'Ingredient', | |
'value' => 'ingredient', | |
), | |
array( | |
'text' => 'Quantity/volume', | |
'value' => 'quantity_volume', | |
), | |
array( | |
'text' => 'Imperial unit of measure', | |
'value' => 'imperial_unit_of_measure', | |
), | |
array( | |
'text' => 'Metric unit of measure', | |
'value' => 'metric_unit_of_measure', | |
), | |
), | |
'pageNumber' => 1, // Ensure this is correct | |
) ); | |
// Create | |
$instructions = GF_Fields::create( array( | |
'type' => 'list', | |
'id' => 2001, // The Field ID must be unique on the form | |
'formId' => $form['id'], | |
'label' => 'Preparation Instructions', | |
'maxRows' => '20', | |
'enableColumns' => false, | |
'pageNumber' => 1, // Ensure this is correct | |
) ); | |
// Create a repeater | |
$recipe = GF_Fields::create( array( | |
'type' => 'repeater', | |
'description' => '', | |
'id' => 2000, // The Field ID must be unique on the form | |
'formId' => $form['id'], | |
'label' => 'Subrecipe', | |
'addButtonText' => 'Add Subrecipe', // Optional | |
'removeButtonText' => 'Remove Subrecipe', // Optional | |
'maxItems' => 10, // Optional | |
'pageNumber' => 1, // Ensure this is correct | |
'fields' => array( $ingredients, $instructions ), // Add the fields here. | |
) ); | |
$form['fields'][] = $recipe; | |
return $form; | |
} | |
// Remove the field before the form is saved. Adjust your form ID | |
add_filter( 'gform_form_update_meta_1', 'remove_my_field', 10, 3 ); | |
function remove_my_field( $form_meta, $form_id, $meta_name ) { | |
if ( $meta_name == 'display_meta' ) { | |
// Remove the Repeater field: ID 1000 | |
$form_meta['fields'] = wp_list_filter( $form_meta['fields'], array( 'id' => 2000 ), 'NOT' ); | |
} | |
return $form_meta; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment