Сохранить флажки с foreach l oop для всех зарегистрированных типов сообщений [Разработка плагинов] - PullRequest
0 голосов
/ 16 января 2020

Я новичок в разработке плагинов WordPress. Здесь я хочу, чтобы пользователь проверял свои необходимые типы сообщений из всех зарегистрированных типов сообщений, перечисленных в флажке. Этот код ниже показывает все зарегистрированные типы сообщений с флажком, но когда пользователь устанавливает флажок и сохраняет изменения, страница обновляется, но флажок не устанавливается.

function fbog_options_page() {

    add_submenu_page(
    	'tools.php',
        'FB Custom Open Graph',
        'FB Custom Open Graph',
        'manage_options',
        'cpn-fbog-settings',
        'cpn_fbog_options_page_html',
        20
    );
}
add_action( 'admin_menu', 'fbog_options_page' );





function cpn_fbog_settings(){
	register_setting('fbog_settings_group', 'fbog_settings');
}
add_action('admin_init', 'cpn_fbog_settings');




function cpn_fbog_options_page_html(){
	global $fbog_options;

	$fbog_options = get_option('fbog_settings');
	
	ob_start();
?>
	<div class="wrap">
		<div class="container">
			<div class="row">
				<div class="col-md-12">
					<center><h1>Welcome to Custom Facebook Open Graph</h1></center>

					<h3>Choose the post types to display the "Custom Facebook Open Graph".</h3>
					
					<form method="post" action="options.php">
 
						<?php settings_fields('fbog_settings_group'); ?>
			 
						<h4>Check the Post Types</h4>
						<p>
							<?php
								$post_types = get_post_types();
							foreach ($post_types as $post_type) {
							?>
							<input id="fbog_settings_<?php echo $post_type; ?>" name="fbog_settings[post_types]" type="checkbox" value="1"<?php checked( 1, $fbog_options['post_types'], false ); ?> />
							<label class="description" for="fbog_settings[post_types]"><?php _e($post_type, 'fbog_domain'); ?></label>
							<br />
							<?php
								}
							?>
						</p>
			 
						<p class="submit">
							<input type="submit" class="button-primary" value="<?php _e('Save Options', 'fbog_domain'); ?>" />
						</p>
			 
					</form>
 				</div>
 			</div>
 		</div>
 	</div> 
<?php
echo ob_get_clean();
}

1 Ответ

0 голосов
/ 16 января 2020

ваш код правильный, кроме того, что вы не сохраняете правильный тип записи.
измените эту строку:

<input id="fbog_settings_<?php echo $post_type; ?>" name="fbog_settings[<?= $post_type ?>]" type="checkbox" value="1"<?php checked( 1, @$fbog_options[$post_type]); ?> />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...