12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427 |
- <?php
- function get_field( $selector, $post_id = false, $format_value = true ) {
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $field = acf_maybe_get_field( $selector, $post_id );
-
- if ( ! $field ) {
- $field = acf_get_valid_field(
- array(
- 'name' => $selector,
- 'key' => '',
- 'type' => '',
- )
- );
-
- $format_value = false;
- }
-
- $value = acf_get_value( $post_id, $field );
-
- if ( $format_value ) {
-
- $value = acf_format_value( $value, $post_id, $field );
- }
-
- return $value;
- }
- function the_field( $selector, $post_id = false, $format_value = true ) {
- $value = get_field( $selector, $post_id, $format_value );
- if ( is_array( $value ) ) {
- $value = implode( ', ', $value );
- }
- echo $value;
- }
- function get_field_object( $selector, $post_id = false, $format_value = true, $load_value = true ) {
-
- if ( is_array( $format_value ) && isset( $format_value['format_value'] ) ) {
- $format_value = $format_value['format_value'];
- }
- $post_id = acf_get_valid_post_id( $post_id );
- $field = acf_maybe_get_field( $selector, $post_id );
- if ( ! $field ) {
- return false;
- }
- if ( $load_value ) {
- $field['value'] = acf_get_value( $post_id, $field );
- }
- if ( $format_value ) {
- $field['value'] = acf_format_value( $field['value'], $post_id, $field );
- }
- return $field;
- }
- function acf_maybe_get_field( $selector, $post_id = false, $strict = true ) {
-
- acf_init();
-
- if ( acf_is_field_key( $selector ) ) {
- return acf_get_field( $selector );
- }
-
- $post_id = acf_get_valid_post_id( $post_id );
- $field = acf_get_meta_field( $selector, $post_id );
- if ( $field ) {
- return $field;
- }
-
- if ( ! $strict ) {
- return acf_get_field( $selector );
- }
-
- return false;
- }
- function acf_maybe_get_sub_field( $selectors, $post_id = false, $strict = true ) {
-
- if ( ! is_array( $selectors ) || count( $selectors ) < 3 ) {
- return false;
- }
-
- $offset = acf_get_setting( 'row_index_offset' );
- $selector = acf_extract_var( $selectors, 0 );
- $selectors = array_values( $selectors );
-
- $field = acf_maybe_get_field( $selector, $post_id, $strict );
-
- if ( ! $field ) {
- return false;
- }
-
- for ( $j = 0; $j < count( $selectors ); $j += 2 ) {
-
- $sub_i = $selectors[ $j ];
- $sub_s = $selectors[ $j + 1 ];
- $field_name = $field['name'];
-
- $field = acf_get_sub_field( $sub_s, $field );
-
- if ( ! $field ) {
- return false;
- }
-
- $field['name'] = $field_name . '_' . ( $sub_i - $offset ) . '_' . $field['name'];
- }
-
- return $field;
- }
- function get_fields( $post_id = false, $format_value = true ) {
-
- $fields = get_field_objects( $post_id, $format_value );
- $meta = array();
-
- if ( ! $fields ) {
- return false;
- }
-
- foreach ( $fields as $k => $field ) {
- $meta[ $k ] = $field['value'];
- }
-
- return $meta;
- }
- function get_field_objects( $post_id = false, $format_value = true, $load_value = true ) {
-
- acf_init();
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $meta = acf_get_meta( $post_id );
-
- if ( empty( $meta ) ) {
- return false;
- }
-
- $fields = array();
- foreach ( $meta as $key => $value ) {
-
- if ( ! isset( $meta[ "_$key" ] ) || ( ! is_string( $meta[ "_$key" ] ) && ! is_numeric( $meta[ "_$key" ] ) ) ) {
- continue;
- }
-
- $field = acf_get_field( $meta[ "_$key" ] );
-
-
- if ( ! $field || $field['name'] !== $key ) {
- continue;
- }
-
- if ( $load_value ) {
- $field['value'] = acf_get_value( $post_id, $field );
- }
-
- if ( $format_value ) {
- $field['value'] = acf_format_value( $field['value'], $post_id, $field );
- }
-
- $fields[ $key ] = $field;
- }
-
- if ( empty( $fields ) ) {
- return false;
- }
-
- return $fields;
- }
- function have_rows( $selector, $post_id = false ) {
-
- $_post_id = $post_id;
- $post_id = acf_get_valid_post_id( $post_id );
-
- $key = "selector={$selector}/post_id={$post_id}";
- $active_loop = acf_get_loop( 'active' );
- $prev_loop = acf_get_loop( 'previous' );
- $new_loop = false;
- $sub_field = false;
-
- if ( ! $active_loop ) {
- $new_loop = 'parent';
-
- } elseif ( $key !== $active_loop['key'] ) {
-
- $sub_field_exists = false;
- $sub_field = acf_get_sub_field( $selector, $active_loop['field'] );
- if ( $sub_field ) {
- $sub_field_exists = isset( $active_loop['value'][ $active_loop['i'] ][ $sub_field['key'] ] );
- }
-
- if ( $post_id != $active_loop['post_id'] ) {
-
-
- if ( empty( $_post_id ) && $sub_field_exists ) {
- $new_loop = 'child';
-
-
- } elseif ( $prev_loop && $prev_loop['post_id'] == $post_id ) {
- acf_remove_loop( 'active' );
- $active_loop = $prev_loop;
-
-
- } else {
- $new_loop = 'parent';
- }
-
- } elseif ( $selector != $active_loop['selector'] ) {
-
-
- if ( $sub_field_exists ) {
- $new_loop = 'child';
-
-
- } elseif ( $prev_loop && $prev_loop['selector'] == $selector && $prev_loop['post_id'] == $post_id ) {
- acf_remove_loop( 'active' );
- $active_loop = $prev_loop;
-
-
- } else {
- $new_loop = 'parent';
- }
- }
- }
-
- if ( $new_loop ) {
- $args = array(
- 'key' => $key,
- 'selector' => $selector,
- 'post_id' => $post_id,
- 'name' => null,
- 'value' => null,
- 'field' => null,
- 'i' => -1,
- );
-
- if ( $new_loop === 'parent' ) {
- $field = get_field_object( $selector, $post_id, false );
- if ( $field ) {
- $args['field'] = $field;
- $args['value'] = $field['value'];
- $args['name'] = $field['name'];
- unset( $args['field']['value'] );
- }
-
- } else {
- $args['field'] = $sub_field;
- $args['value'] = $active_loop['value'][ $active_loop['i'] ][ $sub_field['key'] ];
- $args['name'] = "{$active_loop['name']}_{$active_loop['i']}_{$sub_field['name']}";
- $args['post_id'] = $active_loop['post_id'];
- }
-
- if ( ! $args['value'] || ! is_array( $args['value'] ) ) {
- return false;
- }
-
- if ( acf_get_field_type_prop( $args['field']['type'], 'have_rows' ) === 'single' ) {
- $args['value'] = array( $args['value'] );
- }
-
- $active_loop = acf_add_loop( $args );
- }
-
- if ( $active_loop && isset( $active_loop['value'][ $active_loop['i'] + 1 ] ) ) {
- return true;
- }
-
- acf_remove_loop( 'active' );
- return false;
- }
- function the_row( $format = false ) {
-
- $i = acf_get_loop( 'active', 'i' );
-
- $i++;
-
- acf_update_loop( 'active', 'i', $i );
-
- return get_row( $format );
- }
- function get_row( $format = false ) {
-
- $loop = acf_get_loop( 'active' );
-
- if ( ! $loop ) {
- return false;
- }
-
- $value = acf_maybe_get( $loop['value'], $loop['i'] );
-
-
- if ( ! $value ) {
- return false;
- }
-
- if ( $format ) {
-
- $field = $loop['field'];
-
- if ( acf_get_field_type_prop( $field['type'], 'have_rows' ) === 'single' ) {
-
- $value = acf_format_value( $value, $loop['post_id'], $field );
-
- } else {
-
-
-
- $value = acf_format_value( $loop['value'], $loop['post_id'], $field );
- $value = acf_maybe_get( $value, $loop['i'] );
- }
- }
-
- return $value;
- }
- function get_row_index() {
-
- $i = acf_get_loop( 'active', 'i' );
- $offset = acf_get_setting( 'row_index_offset' );
-
- return $offset + $i;
- }
- function the_row_index() {
- echo get_row_index();
- }
- function get_row_sub_field( $selector ) {
-
- $row = acf_get_loop( 'active' );
-
- if ( ! $row ) {
- return false;
- }
-
- $sub_field = acf_get_sub_field( $selector, $row['field'] );
-
- if ( ! $sub_field ) {
- return false;
- }
-
- $sub_field['name'] = "{$row['name']}_{$row['i']}_{$sub_field['name']}";
-
- return $sub_field;
- }
- function get_row_sub_value( $selector ) {
-
- $row = acf_get_loop( 'active' );
-
- if ( ! $row ) {
- return null;
- }
-
- if ( isset( $row['value'][ $row['i'] ][ $selector ] ) ) {
- return $row['value'][ $row['i'] ][ $selector ];
- }
-
- return null;
- }
- function reset_rows() {
-
- acf_remove_loop( 'active' );
-
- return true;
- }
- function has_sub_field( $field_name, $post_id = false ) {
-
- $r = have_rows( $field_name, $post_id );
-
- if ( $r ) {
- the_row();
- }
-
- return $r;
- }
- function has_sub_fields( $field_name, $post_id = false ) {
- return has_sub_field( $field_name, $post_id );
- }
- function get_sub_field( $selector = '', $format_value = true ) {
-
- $sub_field = get_sub_field_object( $selector, $format_value );
-
- if ( ! $sub_field ) {
- return false;
- }
-
- return $sub_field['value'];
- }
- function the_sub_field( $field_name, $format_value = true ) {
- $value = get_sub_field( $field_name, $format_value );
- if ( is_array( $value ) ) {
- $value = implode( ', ', $value );
- }
- echo $value;
- }
- function get_sub_field_object( $selector, $format_value = true, $load_value = true ) {
-
- $row = acf_get_loop( 'active' );
-
- if ( ! $row ) {
- return false;
- }
-
- $sub_field = get_row_sub_field( $selector );
-
- if ( ! $sub_field ) {
- return false;
- }
-
- if ( $load_value ) {
- $sub_field['value'] = get_row_sub_value( $sub_field['key'] );
- }
-
- if ( $format_value ) {
-
- $sub_field['value'] = acf_format_value( $sub_field['value'], $row['post_id'], $sub_field );
- }
-
- return $sub_field;
- }
- function get_row_layout() {
-
- $row = get_row();
-
- if ( isset( $row['acf_fc_layout'] ) ) {
- return $row['acf_fc_layout'];
- }
-
- return false;
- }
- function acf_shortcode( $atts ) {
-
- if ( ! acf_get_setting( 'enable_shortcode' ) ) {
- return;
- }
- if ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) {
-
- if ( ! doing_filter( 'the_content' ) && ! apply_filters( 'acf/shortcode/allow_in_block_themes_outside_content', false ) ) {
- return;
- }
- }
-
- $preview_capability = apply_filters( 'acf/shortcode/preview_capability', 'publish_posts' );
- if ( is_preview() && ! current_user_can( $preview_capability ) ) {
- return apply_filters( 'acf/shortcode/preview_capability_message', __( '[ACF shortcode value disabled for preview]', 'acf' ) );
- }
-
- $ajax_capability = apply_filters( 'acf/ajax/shortcode_capability', 'edit_posts' );
- if ( wp_doing_ajax() && ( $ajax_capability !== false ) && ! current_user_can( $ajax_capability ) ) {
- return;
- }
- $atts = shortcode_atts(
- array(
- 'field' => '',
- 'post_id' => false,
- 'format_value' => true,
- ),
- $atts,
- 'acf'
- );
- $access_already_prevented = apply_filters( 'acf/prevent_access_to_unknown_fields', false );
- $filter_applied = false;
- if ( ! $access_already_prevented ) {
- $filter_applied = true;
- add_filter( 'acf/prevent_access_to_unknown_fields', '__return_true' );
- }
-
- $value = get_field( $atts['field'], $atts['post_id'], $atts['format_value'] );
- if ( $filter_applied ) {
- remove_filter( 'acf/prevent_access_to_unknown_fields', '__return_true' );
- }
- if ( is_array( $value ) ) {
- $value = implode( ', ', $value );
- }
- return $value;
- }
- add_shortcode( 'acf', 'acf_shortcode' );
- function update_field( $selector, $value, $post_id = false ) {
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $field = acf_maybe_get_field( $selector, $post_id, false );
-
- if ( ! $field ) {
- $field = acf_get_valid_field(
- array(
- 'name' => $selector,
- 'key' => '',
- 'type' => '',
- )
- );
- }
-
- return acf_update_value( $value, $post_id, $field );
- }
- function update_sub_field( $selector, $value, $post_id = false ) {
-
- $sub_field = false;
-
- if ( is_array( $selector ) ) {
- $post_id = acf_get_valid_post_id( $post_id );
- $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false );
- } else {
- $post_id = acf_get_loop( 'active', 'post_id' );
- $sub_field = get_row_sub_field( $selector );
- }
-
- if ( ! $sub_field ) {
- return false;
- }
-
- return acf_update_value( $value, $post_id, $sub_field );
- }
- function delete_field( $selector, $post_id = false ) {
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $field = acf_maybe_get_field( $selector, $post_id );
-
- return $field ? acf_delete_value( $post_id, $field ) : false;
- }
- function delete_sub_field( $selector, $post_id = false ) {
- return update_sub_field( $selector, null, $post_id );
- }
- function add_row( $selector, $row = false, $post_id = false ) {
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $field = acf_maybe_get_field( $selector, $post_id, false );
-
- if ( ! $field ) {
- return false;
- }
-
- $value = acf_get_value( $post_id, $field );
-
- $value = acf_get_array( $value );
-
- $value[] = $row;
-
- $field['pagination'] = false;
-
- acf_update_value( $value, $post_id, $field );
-
- return count( $value );
- }
- function add_sub_row( $selector, $row = false, $post_id = false ) {
-
- $sub_field = false;
-
- if ( is_array( $selector ) ) {
- $post_id = acf_get_valid_post_id( $post_id );
- $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false );
- } else {
- $post_id = acf_get_loop( 'active', 'post_id' );
- $sub_field = get_row_sub_field( $selector );
- }
-
- if ( ! $sub_field ) {
- return false;
- }
-
- $value = acf_get_value( $post_id, $sub_field );
-
- $value = acf_get_array( $value );
-
- $value[] = $row;
-
- acf_update_value( $value, $post_id, $sub_field );
-
- return count( $value );
- }
- function update_row( $selector, $i = 1, $row = false, $post_id = false ) {
-
- $offset = acf_get_setting( 'row_index_offset' );
- $i = $i - $offset;
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $field = acf_maybe_get_field( $selector, $post_id, false );
-
- if ( ! $field ) {
- return false;
- }
-
- $value = acf_get_value( $post_id, $field );
-
- $value = acf_get_array( $value );
-
- $value[ $i ] = $row;
-
- acf_update_value( $value, $post_id, $field );
-
- return true;
- }
- function update_sub_row( $selector, $i = 1, $row = false, $post_id = false ) {
-
- $sub_field = false;
- $offset = acf_get_setting( 'row_index_offset' );
- $i = $i - $offset;
-
- if ( is_array( $selector ) ) {
- $post_id = acf_get_valid_post_id( $post_id );
- $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false );
- } else {
- $post_id = acf_get_loop( 'active', 'post_id' );
- $sub_field = get_row_sub_field( $selector );
- }
-
- if ( ! $sub_field ) {
- return false;
- }
-
- $value = acf_get_value( $post_id, $sub_field );
-
- $value = acf_get_array( $value );
-
- $value[ $i ] = $row;
-
- acf_update_value( $value, $post_id, $sub_field );
-
- return true;
- }
- function delete_row( $selector, $i = 1, $post_id = false ) {
-
- $offset = acf_get_setting( 'row_index_offset' );
- $i = $i - $offset;
-
- $post_id = acf_get_valid_post_id( $post_id );
-
- $field = acf_maybe_get_field( $selector, $post_id );
-
- if ( ! $field ) {
- return false;
- }
-
- $value = acf_get_value( $post_id, $field );
-
- $value = acf_get_array( $value );
-
- if ( ! isset( $value[ $i ] ) ) {
- return false;
- }
-
- unset( $value[ $i ] );
-
- acf_update_value( $value, $post_id, $field );
-
- return true;
- }
- function delete_sub_row( $selector, $i = 1, $post_id = false ) {
-
- $sub_field = false;
- $offset = acf_get_setting( 'row_index_offset' );
- $i = $i - $offset;
-
- if ( is_array( $selector ) ) {
- $post_id = acf_get_valid_post_id( $post_id );
- $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false );
- } else {
- $post_id = acf_get_loop( 'active', 'post_id' );
- $sub_field = get_row_sub_field( $selector );
- }
-
- if ( ! $sub_field ) {
- return false;
- }
-
- $value = acf_get_value( $post_id, $sub_field );
-
- $value = acf_get_array( $value );
-
- if ( ! isset( $value[ $i ] ) ) {
- return false;
- }
-
- unset( $value[ $i ] );
-
- acf_update_value( $value, $post_id, $sub_field );
-
- return true;
- }
- function create_field( $field ) {
- acf_render_field( $field );
- }
- function render_field( $field ) {
- acf_render_field( $field );
- }
- function reset_the_repeater_field() {
- return reset_rows();
- }
- function the_repeater_field( $field_name, $post_id = false ) {
- return has_sub_field( $field_name, $post_id );
- }
- function the_flexible_field( $field_name, $post_id = false ) {
- return has_sub_field( $field_name, $post_id );
- }
- function acf_filter_post_id( $post_id ) {
- return acf_get_valid_post_id( $post_id );
- }
|