Files
roi-theme/wp-content/plugins/sociallocker-next-premium/bizpanda/libs/factory/metaboxes/metaboxes.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

151 lines
4.4 KiB
PHP
Executable File

<?php
/**
* A group of classes and methods to create and manage metaboxes.
*
* @author Paul Kashtanoff <paul@byonepress.com>
* @copyright (c) 2013, OnePress Ltd
*
* @package factory-metaboxes
* @since 1.0.0
*/
add_action('add_meta_boxes', 'FactoryMetaboxes321::actionAddMetaboxes');
add_action('admin_enqueue_scripts', 'FactoryMetaboxes321::actionAdminEnqueueScripts');
add_action('save_post', 'FactoryMetaboxes321::actionSavePost');
/**
* A base class to manage metaboxes.
*
* The main tasks of the manager is:
* - to register metaboxes for custom posts
* - to process data on post saving
*
* @since 1.0.0
*/
class FactoryMetaboxes321 {
/**
* A variable to store metaboxes per type they defined for.
*
* @since 1.0.0
* @var FactoryMetaboxes321_Metabox[]
*/
public static $metaboxes = array();
/**
* A variable storing post types for which there're metaboxes registered.
*
* @since 1.0.0
* @var string[]
*/
public static $postTypes = array();
protected static $_existingMetaboxes = array();
/**
* Registers a metabox by its class name.
*
* @since 1.0.0
* @param type $className A metabox class name.
* @return FactoryMetaboxes321_Metabox
*/
public static function register( $classNameOrObject, $plugin ) {
if ( is_string( $classNameOrObject )) {
$className = $classNameOrObject;
if ( !isset( self::$_existingMetaboxes[$className] ) ) {
self::$_existingMetaboxes[$className] = new $className( $plugin );
}
} else {
$className = get_class( $classNameOrObject );
if ( !isset( self::$_existingMetaboxes[$className] ) ) {
self::$_existingMetaboxes[$className] = $classNameOrObject;
}
}
$metabox =self::$_existingMetaboxes[$className];
self::$metaboxes[$metabox->id] = $metabox;
if ( empty( $metabox->postTypes ) ) return $metabox;
foreach($metabox->postTypes as $type) {
self::$postTypes[$type][$metabox->id] = $metabox;
}
return $metabox;
}
/**
* Registers a metabox for a given post type.
*
* @since 1.0.0
* @param type $classNameOrObject A metabox class name.
* @param type $postType A post type for which a given metabox should be registered.
* @return FactoryMetaboxes321_Metabox
*/
public static function registerFor( $classNameOrObject, $postType, $plugin ) {
$metabox = self::register( $classNameOrObject, $plugin );
self::$metaboxes[$metabox->id]->addPostType($postType);
self::$postTypes[$postType][$metabox->id] = $metabox;
return $metabox;
}
/**
* On calling the action "add_meta_boxes".
*
* Registering metaboxes via Wordpress API.
* @link http://codex.wordpress.org/Function_Reference/add_meta_box
*
* @since 1.0.0
* @return void
*/
public static function actionAddMetaboxes() {
foreach(self::$postTypes as $type => $metaboxes) {
foreach($metaboxes as $metabox) {
add_meta_box(
$metabox->id,
$metabox->title,
array($metabox, 'show'),
$type,
$metabox->context,
$metabox->priority
);
}
}
}
/**
* On calling the action "admin_enqueue_scripts".
*
* Adding scripts and styles for registered metaboxes for respective pages.
*
* @since 1.0.0
* @return void
*/
public static function actionAdminEnqueueScripts( $hook ) {
if ( !in_array( $hook, array('post.php', 'post-new.php'))) return;
foreach(self::$metaboxes as $metabox) $metabox->connect();
}
/**
* On calling the action "save_post".
*
* @since 1.0.0
* @return void
*/
public static function actionSavePost( $post_id ) {
// verify the post type
if ( !isset( $_POST['post_type'] ) ) return $post_id;
foreach(self::$metaboxes as $metabox) {
$metabox->actionSavePost( $post_id );
}
}
}