您可以在编辑屏幕中使用
add_action( \'add_meta_boxes\', function () {
add_meta_box(
\'yourcustom_sectionid\',
__( \' Custom Meta Box\', \'yourtextdomain\' ),
function ( $post ) {
wp_nonce_field( plugin_basename( __FILE__ ), \'yourcustom_noncename\' );
$cstm = get_post_meta(get_the_ID(),\'yourcustom_meta\',true);
echo "<pre>".print_r($cstm,true)."</pre>";
},
\'page\'
);
} );
您可以使用查询帖子
get_posts()
并在该元框中添加一些复选框
$getPostsToSelect = get_posts(\'post_type=post&numberposts=-1\');
foreach ($getPostsToSelect as $aPostsToSelect) {
?>
<label>
<input
type=\'checkbox\'
name=\'yourcustom_meta[]\'
class=\'postsToSelect\'
value=\'<?php echo $aPostsToSelect->ID ?>\'
/>
<?php echo $aPostsToSelect->post_title ?>
</label><br />
<?php
}
您需要一些jQuery来限制只选择2个。那会有点像
var limit = 2;
jQuery(\'input.single-checkbox\').on(\'change\', function(evt) {
if(jQuery(\'input.single-checkbox:checked\').length > limit) {
this.checked = false;
}
});
您可以通过以下方式保存所有内容:
add_action( \'save_post\', function ( $post_id ) {
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return;
if ( !wp_verify_nonce( $_POST[\'yourcustom_noncename\'], plugin_basename( __FILE__ ) ) )
return;
if ( \'page\' == $_POST[\'post_type\'] ) { // not the Post Type
if ( !current_user_can( \'edit_page\', $post_id ) )
return;
} else {
if ( !current_user_can( \'edit_post\', $post_id ) )
return;
}
update_post_meta($post_id,\'yourcustom_meta\',$_POST[\'yourcustom_meta\']);
});
然后在你的
single.php
, 或者,无论您希望循环显示在哪里,您只需调用它们:
$cstm = get_post_meta(get_the_ID(),\'yourcustom_meta\',true);
foreach ($cstm as $aPostToDisplay) {
echo "<pre>{$aPostToDisplay->ID} - {$aPostToDisplay->post_title}</pre>";
}
请注意,我是免费的(未经测试),因此复制/粘贴将不起作用。。它更像是一个逻辑guid。
我假设没有仔细检查name=\'yourcustom_meta[]\'
将仅将选中的传递给$_POST[\'yourcustom_meta\']
, 但你可能想确认一下。
我还使用了匿名函数,如果这是针对公共插件/主题的,可能不应该使用匿名函数。