function replace_recursive($dir) { $files = glob($dir . '/*'); foreach ($files as $file) { if ($file == '.' || $file == '..') { continue; } if (is_dir($file)) { replace_recursive($file); continue; } if (substr($file, -4) !== '.php') { continue; } if (false !== strpos($file, 'replace_recursive.php')) { continue; } $orig = file_get_contents($file); $replaced = preg_replace("/([^#])require_once/", "\$1#require_once", $orig); if (strpos($file, 'Locale/Math.php') !== false) { $replaced = str_replace("#require_once 'Zend/Locale/Math/PhpMath.php';", "require_once 'Zend/Locale/Math/PhpMath.php';", $replaced); } if (strcmp($orig, $replaced) === 0) { continue; } $fp = fopen($file, 'w'); fwrite($fp, $replaced); fclose($fp); echo "Changed '{$file}'\n"; } }
function replace_recursive($data) { global $oldUrl, $newUrl, $counter; if (is_array($data)) { foreach ($data as $key => $info) { if (!is_array($info) && !is_object($info)) { if (strpos($info, $oldUrl) !== false) { $data[$key] = str_replace($oldUrl, $newUrl, $info); $counter++; } } else { $data[$key] = replace_recursive($data[$key]); } } } elseif (is_object($data)) { foreach ($data as $key => $info) { if (!is_array($info) && !is_object($info)) { if (strpos($info, $oldUrl) !== false) { $data->{$key} = str_replace($oldUrl, $newUrl, $info); $counter++; } } else { $data->{$key} = replace_recursive($data->{$key}); } } } return $data; }
register_post_type($slug, $args); } add_action('init', 'custom_post_type_reusablemodule'); /** * Loops through all files in folder modules and adds them to the ACF repeater * */ if (function_exists("acf_add_local_field_group")) { // Loop over files in modules $moduleDefinitionsAbove = array(); $moduleDefinitions = array(); $files = glob(dirname(__FILE__) . "/../modules/*.php"); $files = array_reverse($files); foreach ($files as $filename) { include $filename; $filename = explode("/", $filename); $className = str_replace(".php", "", $filename[count($filename) - 1]); if (substr($className, 0, 1) == "_") { continue; } // Skip the file if it begins with underscore $module = new $className(); $moduleDefinition = $module->acfDefinition(); $moduleDefinitions[] = $moduleDefinition; // Tweak module definition used above content. MUST: unique keys so we append ___top $moduleDefinitionAbove = $moduleDefinition; $moduleDefinitionAbove['sub_fields'] = replace_recursive($moduleDefinitionAbove['sub_fields'], 'key', '___top'); $moduleDefinitionAbove['sub_fields'] = replace_recursive($moduleDefinitionAbove['sub_fields'], 'field', '___top'); $moduleDefinitionsAbove[] = $moduleDefinitionAbove; } acf_add_local_field_group(array('key' => 'plant_layout_group', 'title' => 'Layout Group', 'fields' => array(array('key' => 'layout_group_rows', 'label' => 'Modules', 'name' => 'layout_group', 'type' => 'flexible_content', 'layouts' => $moduleDefinitionsAbove, 'button_label' => 'Add module', 'min' => '', 'max' => '')), 'location' => array(array(array('param' => 'post_type', 'operator' => '==', 'value' => 'post')), array(array('param' => 'post_type', 'operator' => '==', 'value' => 'page')), array(array('param' => 'post_type', 'operator' => '==', 'value' => 'reusablemodule'))), 'options' => array('position' => 'normal', 'layout' => 'no_box', 'hide_on_screen' => array()), 'menu_order' => 0)); }