HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Apache24/htdocs/wp-content/themes/page-builder-framework/inc/options.php
<?php
/**
 * Options.
 *
 * @package Page Builder Framework
 */

defined( 'ABSPATH' ) || die( "Can't access directly" );

/**
 * Load metaboxes.
 */
function wpbf_metabox_setup() {

	add_action( 'add_meta_boxes', 'wpbf_metaboxes' );
	add_action( 'save_post', 'wpbf_save_metadata', 10, 2 );

}
add_action( 'load-post.php', 'wpbf_metabox_setup' );
add_action( 'load-post-new.php', 'wpbf_metabox_setup' );

/**
 * Metaboxes.
 */
function wpbf_metaboxes() {

	// Get public post types.
	$post_types = get_post_types( array( 'public' => true ) );

	// Remove post types from array.
	unset( $post_types['wpbf_hooks'], $post_types['elementor_library'], $post_types['fl-builder-template'] );

	// Add options metabox.
	add_meta_box( 'wpbf', __( 'Template Settings', 'page-builder-framework' ), 'wpbf_options_metabox_callback', $post_types, 'side', 'default' );

	// Add sidebar metabox.
	add_meta_box( 'wpbf_sidebar', __( 'Sidebar', 'page-builder-framework' ), 'wpbf_sidebar_metabox_callback', $post_types, 'side', 'default' );

}

/**
 * Options metabox callback.
 *
 * @param object $post The post oject.
 */
function wpbf_options_metabox_callback( $post ) {

	wp_nonce_field( basename( __FILE__ ), 'wpbf_options_nonce' );

	$wpbf_stored_meta = get_post_meta( $post->ID, 'wpbf_options', true );
	$wpbf_stored_meta = empty( $wpbf_stored_meta ) ? array() : $wpbf_stored_meta;

	if ( in_array( 'remove-title', $wpbf_stored_meta, true ) ) {
		$remove_title = 'remove-title';
	} else {
		$remove_title = false;
	}

	if ( in_array( 'full-width', $wpbf_stored_meta, true ) ) {
		$full_width = 'full-width';
	} elseif ( in_array( 'contained', $wpbf_stored_meta, true ) ) {
		$full_width = 'contained';
	} else {
		$full_width = 'layout-global';
	}

	if ( in_array( 'remove-featured', $wpbf_stored_meta, true ) ) {
		$remove_featured = 'remove-featured';
	} else {
		$remove_featured = false;
	}

	if ( in_array( 'remove-header', $wpbf_stored_meta, true ) ) {
		$remove_header = 'remove-header';
	} else {
		$remove_header = false;
	}

	if ( in_array( 'remove-footer', $wpbf_stored_meta, true ) ) {
		$remove_footer = 'remove-footer';
	} else {
		$remove_footer = false;
	}

	?>

	<h4><?php _e( 'Layout', 'page-builder-framework' ); ?></h4>

	<div>
		<input id="layout-global" type="radio" name="wpbf_options[]" value="layout-global" <?php checked( $full_width, 'layout-global' ); ?> />
		<label for="layout-global"><?php _e( 'Inherit Global Settings', 'page-builder-framework' ); ?></label>
		<?php
		if ( ! wpbf_is_premium() ) {
			echo '<a style="text-decoration: none; box-shadow: none;" href="https://wp-pagebuilderframework.com/docs/global-template-settings/" target="_blank"><i style="font-size: 18px; margin-top: -3px; width: 15px; height: 15px;" class="dashicons dashicons-editor-help"></i></a>';
		}
		?>
	</div>

	<div>
		<input id="layout-full-width" type="radio" name="wpbf_options[]" value="full-width" <?php checked( $full_width, 'full-width' ); ?> />
		<label for="layout-full-width"><?php _e( 'Full Width', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="layout-contained" type="radio" name="wpbf_options[]" value="contained" <?php checked( $full_width, 'contained' ); ?> />
		<label for="layout-contained"><?php _e( 'Contained', 'page-builder-framework' ); ?></label>
	</div>

	<h4><?php _e( 'Disable Elements', 'page-builder-framework' ); ?></h4>

	<div>
		<input id="remove-title" type="checkbox" name="wpbf_options[]" value="remove-title" <?php checked( $remove_title, 'remove-title' ); ?> />
		<label for="remove-title"><?php _e( 'Page Title', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="remove-featured" type="checkbox" name="wpbf_options[]" value="remove-featured" <?php checked( $remove_featured, 'remove-featured' ); ?> />
		<label for="remove-featured"><?php _e( 'Featured Image', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="remove-header" type="checkbox" name="wpbf_options[]" value="remove-header" <?php checked( $remove_header, 'remove-header' ); ?> />
		<label for="remove-header"><?php _e( 'Header', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="remove-footer" type="checkbox" name="wpbf_options[]" value="remove-footer" <?php checked( $remove_footer, 'remove-footer' ); ?> />
		<label for="remove-footer"><?php _e( 'Footer', 'page-builder-framework' ); ?></label>
	</div>

	<?php

}

/**
 * Sidebar metabox callback.
 *
 * @param object $post The post object.
 */
function wpbf_sidebar_metabox_callback( $post ) {

	wp_nonce_field( basename( __FILE__ ), 'wpbf_sidebar_nonce' );

	$wpbf_sidebar_position = get_post_meta( $post->ID, 'wpbf_sidebar_position', true );
	$wpbf_sidebar_position = ! empty( $wpbf_sidebar_position ) ? $wpbf_sidebar_position : 'global';

	?>

	<div>
		<input id="sidebar-global" type="radio" name="wpbf_sidebar_position" value="global" <?php checked( $wpbf_sidebar_position, 'global' ); ?> />
		<label for="sidebar-global"><?php _e( 'Inherit Global Settings', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="sidebar-right" type="radio" name="wpbf_sidebar_position" value="right" <?php checked( $wpbf_sidebar_position, 'right' ); ?> />
		<label for="sidebar-right"><?php _e( 'Right Sidebar', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="sidebar-left" type="radio" name="wpbf_sidebar_position" value="left" <?php checked( $wpbf_sidebar_position, 'left' ); ?> />
		<label for="sidebar-left"><?php _e( 'Left Sidebar', 'page-builder-framework' ); ?></label>
	</div>

	<div>
		<input id="no-sidebar" type="radio" name="wpbf_sidebar_position" value="none" <?php checked( $wpbf_sidebar_position, 'none' ); ?> />
		<label for="no-sidebar"><?php _e( 'No Sidebar', 'page-builder-framework' ); ?></label>
	</div>

	<?php

}

/**
 * Save metadata.
 *
 * @param integer $post_id The post ID.
 */
function wpbf_save_metadata( $post_id ) {

	$is_autosave            = wp_is_post_autosave( $post_id );
	$is_revision            = wp_is_post_revision( $post_id );
	$is_valid_nonce         = ( isset( $_POST['wpbf_options_nonce'] ) && wp_verify_nonce( $_POST['wpbf_options_nonce'], basename( __FILE__ ) ) ) ? true : false;
	$is_valid_sidebar_nonce = ( isset( $_POST['wpbf_sidebar_nonce'] ) && wp_verify_nonce( $_POST['wpbf_sidebar_nonce'], basename( __FILE__ ) ) ) ? true : false;

	// Stop here if autosave, revision or nonce is invalid.
	if ( $is_autosave || $is_revision || ! $is_valid_nonce || ! $is_valid_sidebar_nonce ) {
		return;
	}

	// Stop if current user can't edit posts.
	if ( ! current_user_can( 'edit_post', $post_id ) ) {
		return $post_id;
	}

	// Save options metadata.
	$checked = array();

	if ( isset( $_POST['wpbf_options'] ) ) {

		if ( in_array( 'remove-title', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'remove-title';
		}

		if ( in_array( 'full-width', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'full-width';
		}

		if ( in_array( 'contained', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'contained';
		}

		if ( in_array( 'layout-global', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'layout-global';
		}

		if ( in_array( 'remove-featured', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'remove-featured';
		}

		if ( in_array( 'remove-header', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'remove-header';
		}

		if ( in_array( 'remove-footer', $_POST['wpbf_options'], true ) ) {
			$checked[] .= 'remove-footer';
		}
	}

	update_post_meta( $post_id, 'wpbf_options', $checked );

	// Save sidebar metadata.
	$wpbf_sidebar_position = isset( $_POST['wpbf_sidebar_position'] ) ? $_POST['wpbf_sidebar_position'] : '';

	update_post_meta( $post_id, 'wpbf_sidebar_position', $wpbf_sidebar_position );

}