array( 'type' => 'string', 'default' => $this->get_default_value( 'form' ), ), 'landing_page' => array( 'type' => 'string', 'default' => $this->get_default_value( 'landing_page' ), ), 'tag' => array( 'type' => 'string', 'default' => $this->get_default_value( 'tag' ), ), 'restrict_content' => array( 'type' => 'string', 'default' => $this->get_default_value( 'restrict_content' ), ), ); } /** * Returns this plugin sidebar's Fields * * @since 3.3.0 * * @return bool|array */ public function get_fields() { // Load resource classes. $convertkit_forms = new ConvertKit_Resource_Forms( 'post_settings' ); $convertkit_landing_pages = new ConvertKit_Resource_Landing_Pages( 'post_settings' ); $convertkit_tags = new ConvertKit_Resource_Tags( 'post_settings' ); $convertkit_products = new ConvertKit_Resource_Products( 'post_settings' ); // Get Forms. Non-legacy forms populate the dropdown; legacy forms are // exposed separately as a fallback so a previously-saved legacy form // remains visible as the current selection without offering other // legacy forms as new choices. $forms = array( '-1' => esc_html__( 'Default', 'convertkit' ), '0' => esc_html__( 'None', 'convertkit' ), ); $legacy_forms = array(); if ( $convertkit_forms->exist() ) { foreach ( $convertkit_forms->get() as $form ) { $label = sprintf( '%s [%s]', sanitize_text_field( $form['name'] ), // Legacy forms don't include a `format` key, so define them as inline. ( ! empty( $form['format'] ) ? sanitize_text_field( $form['format'] ) : 'inline' ) ); if ( ! empty( $form['format'] ) ) { $forms[ absint( $form['id'] ) ] = $label; } else { $legacy_forms[ absint( $form['id'] ) ] = $label; } } } // Get Landing Pages. Non-legacy pages populate the dropdown; legacy // pages are exposed separately as a fallback so a previously-saved // legacy landing page remains visible as the current selection // without offering other legacy pages as new choices. $landing_pages = array( '0' => esc_html__( 'None', 'convertkit' ), ); $legacy_landing_pages = array(); if ( $convertkit_landing_pages->exist() ) { foreach ( $convertkit_landing_pages->get() as $landing_page ) { if ( isset( $landing_page['url'] ) ) { $legacy_landing_pages[ absint( $landing_page['id'] ) ] = sanitize_text_field( $landing_page['name'] ); } else { $landing_pages[ absint( $landing_page['id'] ) ] = sanitize_text_field( $landing_page['name'] ); } } } // Get Tags. $tags = array( '0' => esc_html__( 'None', 'convertkit' ), ); if ( $convertkit_tags->exist() ) { foreach ( $convertkit_tags->get() as $tag ) { $tags[ absint( $tag['id'] ) ] = sanitize_text_field( $tag['name'] ); } } // Get Products. $restrict_content = array( '0' => esc_html__( 'Do not restrict content to member-only', 'convertkit' ), ); $restrict_content_legacy_forms = array(); if ( $convertkit_forms->exist() ) { $restrict_content['forms'] = array( 'label' => esc_html__( 'Forms', 'convertkit' ), 'values' => array(), ); foreach ( $convertkit_forms->get() as $form ) { $key = 'form_' . absint( $form['id'] ); $label = sprintf( '%s [%s]', sanitize_text_field( $form['name'] ), // Legacy forms don't include a `format` key, so define them as inline. ( ! empty( $form['format'] ) ? sanitize_text_field( $form['format'] ) : 'inline' ) ); if ( ! empty( $form['format'] ) ) { $restrict_content['forms']['values'][ $key ] = $label; } else { $restrict_content_legacy_forms[ $key ] = $label; } } } if ( $convertkit_tags->exist() ) { $restrict_content['tags'] = array( 'label' => esc_html__( 'Tags', 'convertkit' ), 'values' => array(), ); foreach ( $convertkit_tags->get() as $tag ) { $restrict_content['tags']['values'][ 'tag_' . absint( $tag['id'] ) ] = sanitize_text_field( $tag['name'] ); } } if ( $convertkit_products->exist() ) { $restrict_content['products'] = array( 'label' => esc_html__( 'Products', 'convertkit' ), 'values' => array(), ); foreach ( $convertkit_products->get() as $product ) { $restrict_content['products']['values'][ 'product_' . $product['id'] ] = sanitize_text_field( $product['name'] ); } } return array( 'form' => array( 'label' => __( 'Form', 'convertkit' ), 'type' => 'select', 'description' => array( sprintf( '%s: %s %s', esc_html__( 'Default', 'convertkit' ), esc_html__( 'Uses the form specified on the', 'convertkit' ), esc_url( convertkit_get_settings_link() ), esc_html__( 'settings page', 'convertkit' ) ), sprintf( '%s: %s', esc_html__( 'None', 'convertkit' ), esc_html__( 'do not display a form.', 'convertkit' ) ), __( 'Any other option will display that form after the main content.', 'convertkit' ), sprintf( '%s %s', esc_html__( 'To make changes to your forms,', 'convertkit' ), esc_url( convertkit_get_sign_in_url() ), esc_html__( 'sign in to Kit', 'convertkit' ) ), ), 'values' => $forms, 'legacy_values' => $legacy_forms, 'resource_type' => 'forms', ), 'landing_page' => array( 'label' => __( 'Landing Page', 'convertkit' ), 'type' => 'select', 'description' => array( esc_html__( 'Select a landing page to make it appear in place of this page.', 'convertkit' ), sprintf( /* translators: Link to sign in to ConvertKit */ esc_html__( 'To make changes to your landing pages, %s', 'convertkit' ), '' . esc_html__( 'sign in to Kit', 'convertkit' ) . '' ), ), 'values' => $landing_pages, 'legacy_values' => $legacy_landing_pages, 'post_type' => 'page', 'resource_type' => 'landing_pages', ), 'tag' => array( 'label' => __( 'Tag', 'convertkit' ), 'type' => 'select', 'description' => array( esc_html__( 'Select a tag to apply to visitors of this page who are subscribed.', 'convertkit' ), esc_html__( 'A visitor is deemed to be subscribed if they have clicked a link in an email to this site which includes their subscriber ID, or have entered their email address in a Kit Form on this site.', 'convertkit' ), ), 'values' => $tags, 'resource_type' => 'tags', ), 'restrict_content' => array( 'label' => __( 'Restrict Content', 'convertkit' ), 'type' => 'select', 'description' => array( esc_html__( 'Select the Kit form, tag or product that the visitor must be subscribed to, permitting them access to view this member-only content.', 'convertkit' ), sprintf( '%s: %s', esc_html__( 'Form', 'convertkit' ), esc_html__( 'Displays the Kit form. On submission, the email address will be subscribed to the selected form, granting access to the member-only content. Useful to gate free content in return for an email address.', 'convertkit' ) ), sprintf( '%s: %s', esc_html__( 'Tag', 'convertkit' ), esc_html__( 'Displays a WordPress styled subscription form. On submission, the email address will be subscribed to the selected tag, granting access to the member-only content. Useful to gate free content in return for an email address.', 'convertkit' ) ), sprintf( '%s: %s', esc_html__( 'Product', 'convertkit' ), esc_html__( 'Displays a link to the Kit product, and a login form. Useful to gate content that can only be accessed by purchasing the Kit product.', 'convertkit' ) ), ), 'values' => $restrict_content, 'legacy_values' => $restrict_content_legacy_forms, 'resource_type' => 'restrict_content', ), ); } /** * Returns this block's Default Values * * @since 3.3.0 * * @return array */ public function get_default_values() { return array( 'form' => '-1', 'landing_page' => '0', 'tag' => '0', 'restrict_content' => '0', ); } }