123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <?php
- if ( ! class_exists( 'acf_form_attachment' ) ) :
- class acf_form_attachment {
-
- function __construct() {
-
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
-
- add_filter( 'attachment_fields_to_edit', array( $this, 'edit_attachment' ), 10, 2 );
-
- add_filter( 'attachment_fields_to_save', array( $this, 'save_attachment' ), 10, 2 );
- }
-
- function admin_enqueue_scripts() {
-
- if ( ! acf_is_screen( array( 'attachment', 'upload' ) ) ) {
- return;
- }
-
- acf_enqueue_scripts(
- array(
- 'uploader' => true,
- )
- );
-
- if ( acf_is_screen( 'upload' ) ) {
- add_action( 'admin_footer', array( $this, 'admin_footer' ), 0 );
- }
- }
-
- function admin_footer() {
-
- acf_form_data(
- array(
- 'screen' => 'attachment',
- 'post_id' => 0,
- )
- );
- ?>
- <script type="text/javascript">
-
- acf.unload.active = 0;
- </script>
- <?php
- }
-
- function edit_attachment( $form_fields, $post ) {
-
- $is_page = acf_is_screen( 'attachment' );
- $post_id = $post->ID;
- $el = 'tr';
-
- $field_groups = acf_get_field_groups(
- array(
- 'attachment_id' => $post_id,
- 'attachment' => $post_id,
- )
- );
-
- if ( ! empty( $field_groups ) ) {
-
- ob_start();
- acf_form_data(
- array(
- 'screen' => 'attachment',
- 'post_id' => $post_id,
- )
- );
-
- echo '</td></tr>';
-
- foreach ( $field_groups as $field_group ) {
-
- $fields = acf_get_fields( $field_group );
-
- if ( ! $is_page ) {
- $field_group['instruction_placement'] = 'field';
- }
-
- acf_render_fields( $fields, $post_id, $el, $field_group['instruction_placement'] );
- }
-
- echo '<tr class="compat-field-acf-blank"><td>';
- $html = ob_get_contents();
- ob_end_clean();
- $form_fields['acf-form-data'] = array(
- 'label' => '',
- 'input' => 'html',
- 'html' => $html,
- );
- }
-
- return $form_fields;
- }
-
- function save_attachment( $post, $attachment ) {
-
- if ( ! acf_verify_nonce( 'attachment' ) ) {
- return $post;
- }
-
- if ( acf_is_ajax( 'save-attachment-compat' ) ) {
- acf_save_post( $post['ID'] );
-
- } elseif ( acf_validate_save_post( true ) ) {
- acf_save_post( $post['ID'] );
- }
-
- return $post;
- }
- }
- new acf_form_attachment();
- endif;
- ?>
|