<?php
class acf_third_party
{
function __construct()
{
add_action('admin_head-settings_page_tabify-edit-screen', array($this, 'admin_head_tabify'));
add_action('dp_duplicate_page', array($this, 'dp_duplicate_page'), 11, 2);
add_filter('pts_post_type_filter', array($this, 'pts_post_type_filter'));
}
function pts_post_type_filter( $args )
{
global $typenow;
if( $typenow == "acf" )
{
$args = array(
'public' => false,
'show_ui' => true
);
}
return $args;
}
function admin_head_tabify()
{
add_filter('tabify_posttypes', array($this, 'tabify_posttypes'));
add_action('tabify_add_meta_boxes' , array($this, 'tabify_add_meta_boxes'));
}
function tabify_posttypes( $posttypes )
{
if( isset($posttypes['acf']) )
{
unset( $posttypes['acf'] );
}
return $posttypes;
}
function tabify_add_meta_boxes( $post_type )
{
$acfs = apply_filters('acf/get_field_groups', array());
if($acfs)
{
foreach($acfs as $acf)
{
add_meta_box(
'acf_' . $acf['id'],
$acf['title'],
array($this, 'dummy'),
$post_type
);
}
}
}
function dummy() { }
function dp_duplicate_page( $new_post_id, $old_post_object )
{
if( $old_post_object->post_type != "acf" )
{
return;
}
$metas = get_post_custom( $new_post_id );
if( $metas )
{
foreach( $metas as $field_key => $field )
{
if( strpos($field_key, 'field_') !== false )
{
$field = $field[0];
$field = maybe_unserialize( $field );
$field = maybe_unserialize( $field );
delete_post_meta($new_post_id, $field_key);
$this->create_new_field_keys( $field );
update_post_meta($new_post_id, $field['key'], $field);
}
}
}
}
function create_new_field_keys( &$field )
{
$field['key'] = 'field_' . uniqid();
if( isset($field['sub_fields']) && is_array($field['sub_fields']) )
{
foreach( $field['sub_fields'] as $f )
{
$this->create_new_field_keys( $f );
}
}
elseif( isset($field['layouts']) && is_array($field['layouts']) )
{
foreach( $field['layouts'] as $layout )
{
if( isset($layout['sub_fields']) && is_array($layout['sub_fields']) )
{
foreach( $layout['sub_fields'] as $f )
{
$this->create_new_field_keys( $f );
}
}
}
}
}
}
new acf_third_party();
?>