/** * Returns a Form instance * * @access public * * @param int|WP_Post $form_id. * * @return MC4WP_Form */ function mc4wp_get_form($form_id = 0) { return MC4WP_Form::get_instance($form_id); } /** * Get an array of Form instances * * @access public * * @param array $args Array of parameters * * @return MC4WP_Form[] */ function mc4wp_get_forms(array $args = []) { // parse function arguments $default_args = [ 'post_status' => 'publish', 'posts_per_page' => -1, 'ignore_sticky_posts' => true, 'no_found_rows' => true, ]; $args = array_merge($default_args, $args); // set post_type here so it can't be overwritten using function arguments $args['post_type'] = 'mc4wp-form'; $q = new WP_Query(); $posts = $q->query($args); $forms = []; foreach ($posts as $post) { try { $form = mc4wp_get_form($post); } catch (Exception $e) { continue; } $forms[] = $form; } return $forms; } /** * Echoes the given form * * @access public * * @param int $form_id * @param array $config * @param bool $echo * * @return string */ function mc4wp_show_form($form_id = 0, $config = [], $echo = true) { /** @var MC4WP_Form_Manager $forms */ $forms = mc4wp('forms'); return $forms->output_form($form_id, $config, $echo); } /** * Gets an instance of the submitted form, if any. * * @access public * * @return MC4WP_Form|null */ function mc4wp_get_submitted_form() { return mc4wp('forms')->get_submitted_form(); } /** * Gets the absolute url to edit a form * * @param int $form_id ID of the form * @param string $tab Tab identifier to open * * @return string */ function mc4wp_get_edit_form_url($form_id, $tab = '') { $url = admin_url(sprintf('admin.php?page=mailchimp-for-wp-forms&view=edit-form&form_id=%d', $form_id)); if (! empty($tab)) { $url .= sprintf('&tab=%s', $tab); } return $url; } /** * Get absolute URL to create a new form * * @return string */ function mc4wp_get_add_form_url() { $url = admin_url('admin.php?page=mailchimp-for-wp-forms&view=add-form'); return $url; } mc4wp_register_integration('ninja-forms', 'MC4WP_Ninja_Forms_Integration', true); add_filter('ninja_forms_register_fields', function ($fields) { if (class_exists(NF_Abstracts_Input::class)) { $fields['mc4wp_optin'] = new MC4WP_Ninja_Forms_Field(); } return $fields; }); add_filter('ninja_forms_register_actions', function ($actions) { if (class_exists(NF_Abstracts_Action::class)) { $actions['mc4wp_subscribe'] = new MC4WP_Ninja_Forms_Action(); } return $actions; });