使用复选框选择要显示自定义帖子类型的页面

时间:2014-04-12 作者:zipadee

我有一个自定义的帖子类型叫做“证词”。我试图做的是允许用户创建一个新的证词,然后从一个复选框列表中选择他希望在网站上显示该证词的页面。

我已成功创建复选框以列出所有网站页面,代码如下:

add_action("admin_init", "admin_init3");

function admin_init3(){ 
add_meta_box("credits_meta", "Choose on which pages to display",     "myplugin_inner_custom_box", "testimonies", "normal", "low");
}

function myplugin_inner_custom_box( $post ) {
// we store data as an array, we need to unserialize it
$checkfield = maybe_unserialize( get_post_meta($post->ID, "checkfield", true) );

// Nonce to verify intention later
wp_nonce_field( \'save_quote_meta\', \'custom_nonce\' ); 

$pages = get_pages(); 
foreach ( $pages as $page ) { ?>
    <input id="page_<?php echo $page->ID; ?>" type="checkbox" name="checkfield[]" value="<?php echo $page->ID; ?>" <?php if ( in_array($page->ID, (array) $checkfield) ) { ?> checked <?php } ?>/> <label for="page_<?php echo $page->ID; ?>"><?php echo $page->post_title; ?></label> <br>
<?php 
} 
}
//save the meta box action
add_action( \'save_post\', \'myplugin_meta_save\', 10, 2 );

//save the meta box
function myplugin_meta_save($post_id, $post)
{   
if ( isset($_POST[\'checkfield\']) ) { // if we get new data

    update_post_meta($post_id, "checkfield", $_POST[\'checkfield\'] );

}
}
然而,我对下一步有困难。我的想法是将复选框值放入变量中,然后检查当前页面id是否与其中一个值匹配。如果有,我将显示自定义帖子。虽然这一切都有点模糊,但我不确定我是否走对了路。

目前,我正在努力将复选框值传递到一个变量中,并将其输出。我有下面的代码,但它只是回应数组,数组,数组,数组。

<?php  $checkboxes=get_post_meta($post->ID, "checklist", false);
if ($checkboxes) {
foreach($checkboxes as $checkbox) {
echo  $checkbox;
}
} ?>
任何帮助都将不胜感激。

非常感谢。

1 个回复
SO网友:patrickzdb

听起来您需要对数组中的值运行foreach。E、 g.$复选框[“值”]为$复选框。。如果您这样做:print_r(\'$checkboxes\') 您将了解您试图瞄准的价值观。根据阵列的级别,您甚至可能需要执行$复选框[\'something\'][\'something\\u else\']之类的操作。

希望能有所帮助,请打印并查看源代码,或者将其包装在pre标记中。我相信您届时会知道如何定位foreach。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register