WordPress

zaawansowane pola niestandardowe – Oczekujące posty pokazujące kategorię do czasu opublikowania

  • 18 maja, 2023
  • 3 min read
zaawansowane pola niestandardowe – Oczekujące posty pokazujące kategorię do czasu opublikowania


Użyłem ACF Pro do skonfigurowania typów postów Nagroda „Kategorie” i „Nominowani” – Nagroda jest przypisywana do posta, ale podczas oczekiwania nie pojawia się tutaj dopiero po opublikowaniu, pojawia się. Co tu może pójść nie tak?

`

<?php

# POPULATE SELECT FIELD WIH AWARDS TYPES

add_filter(
    'forminator_cform_render_fields',
    function( $wrappers, $model_id ) {
        if( $model_id != 515 ){  // SET ID OF THE FORM
            return $wrappers;
        }

        $select_fields_data = array(
            'select-1' => 'categories',
        );

        foreach ( $wrappers as $wrapper_key => $wrapper ) {
            if ( ! isset( $wrapper[ 'fields' ] ) ) {
                continue;
            }

            if ( 
                isset( $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ] ) &&
                ! empty( $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ] )
            ) {
                
            $p_args = array(
                'post_type' =>  $select_fields_data[ $wrapper[ 'fields' ][ 0 ][ 'element_id' ] ],
                'numberposts' => -1,
                'post__not_in' => array( 53, ), // IDs of Awards to be excluded from select
            );

                $posts = get_posts( $p_args );

                if ( ! empty( $posts ) ) {
                    $new_options = array();
                    $opt_data = array();
                    foreach( $posts as $post ) {
                        $new_options[] = array(
                            'label' => $post->post_title,
                            'value' => $post->ID,
                            'limit' => '',
                            'key'   => forminator_unique_key(),
                        );
                        $opt_data['options'] = $new_options;
                    }
                    $select_field = Forminator_API::get_form_field( $model_id, $wrapper['fields'][0]['element_id'], true );
                    if( $select_field ){
                        if( $select_field['options'][0]['label'] != $opt_data['options'][0]['label'] ){
                            Forminator_API::update_form_field( $model_id, $wrapper['fields'][0]['element_id'], $opt_data );
                            $wrappers[ $wrapper_key ][ 'fields' ][ 0 ][ 'options' ] = $new_options;
                        }
                    }
                }
            }
        }

        return $wrappers;
    },
    10,
    2
);

add_filter(
    'forminator_replace_form_data', 
    function( $content, $data, $fields ) {
        if( $data['form_id'] != 515 ){ // SET ID OF THE FORM
            return $content;
        }

        if ( ! empty( $content ) ) {
            return $content;
        }

        $form_fields = Forminator_API::get_form_fields( $data['form_id'] );
        $data_field = '';
        foreach($data as $key => $value){
            if ( strpos( $key, 'select' ) !== false ) {
                $values="";
                $field_value = isset( $data[ $key ] ) ? $data[ $key ] : null;

                if ( ! is_null( $field_value ) ) {
                    $fields_slugs  = wp_list_pluck( $form_fields, 'slug' );
                    $field_key     = array_search( $key, $fields_slugs, true );
                    $field_options = false !== $field_key && ! empty( $form_fields[ $field_key ]->raw['options'] )
                            ? wp_list_pluck( $form_fields[ $field_key ]->options, 'label', 'value' )
                            : array();

                    if ( ! isset( $field_options[ $field_value ] ) && isset( $_POST[ $key ] ) ) {
                        return sanitize_text_field( $_POST[ $key ] );
                    }
                }
            }
        }
        return $content;
    },
    10,
    3
);

# END OF THE CODE TO POPULATE SELECT FIELD
 
 
 
 # SET AWARD YEAR FOR NOMINEE

add_action( 'forminator_post_data_field_post_saved', 'forminator_post_data_field_post_saved_custom_tag', 11, 3 );
function forminator_post_data_field_post_saved_custom_tag( $post_id, $field, $data ) { 

    $award_year_name="";
    $csfields = $data['post-custom'];
    
    foreach ( $csfields as $key=>$custom_field ) {
        
        if ( $custom_field['key'] == 'YEAR' ) {
            $award_year_name = $custom_field['value'];
        }       
    }
    
    if ( $award_year_name !== '' ) {
        $taxonomy_name="awards_year"; // taxonomy name for Awards Year
        wp_set_post_terms( $post_id, $award_year_name, $taxonomy_name );
    }
            
}

# END OF AWARD YEAR


Źródło

Warto przeczytać!  Bezproblemowy sposób zarządzania plikami multimedialnymi WordPress