我在我的平台上添加了一个内容评级系统,作者可以在其中选择他们的帖子适合哪些受众。目前,可以使用以下选项:
- 未评级
- G
- PG
- R
我用来在帖子编辑页面上显示评级选项的代码是:
// Article Content Rating
add_action( 'add_meta_boxes', 'rating_select_box' );
function rating_select_box() {
add_meta_box(
'rating_select_box', // id, used as the html id att
__( 'Content Rating (optional)' ), // meta box title
'rating_select_cb', // callback function, spits out the content
'post', // post type or page. This adds to posts only
'side', // context, where on the screen
'low' // priority, where should this go in the context
);
}
function rating_select_cb( $post ) {
global $wpdb;
$value = get_post_meta($post->ID, 'rating', true);
echo '<div class="misc-pub-section misc-pub-section-last"><span id="timestamp"><label>Article Content Rating: </label>';
$ratings = array(
1 => ' G ',
2 => ' PG ',
3 => ' R ',
);
echo '<select name="rating">';
echo '<option value=""' . ((($value == '') || !isset($ratings[$value])) ? ' selected="selected"' : '') . '> Unrated </option>';
// output each rating as an option
foreach ($ratings as $id => $text) {
echo '<option value="' . $id . '"' . (($value == $id) ? ' selected="selected"' : '') . '">' . $text. '</option>';
}
echo '</select>';
echo '</span></div>';
}
add_action( 'save_post', 'save_metadata');
function save_metadata($postid)
{
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return false;
if ( !current_user_can( 'edit_page', $postid ) ) return false;
if( empty($postid) ) return false;
if ( is_null($_REQUEST["rating"]) ) {
delete_post_meta($postid, 'rating');
} else {
update_post_meta($postid, 'rating', $_REQUEST['rating']);
}
}
// END Article Content Rating
现在的问题是,我应该向 single.php
添加什么代码来显示他们的选择?例如,如果作者选择了 PG,那么我想回显“内容分级:PG”;
或者如果是默认设置(未分级),我想回显“内容分级:未评级';
。这怎么可能?理想情况下,由于我的平台流量很大,因此解决方案在服务器上的负载很轻。
最佳答案
您已使用 delete_post_meta()
和 update_post_meta()
函数来删除和修改自定义值。只需使用 get_post_meta()
函数来获取当前帖子的值,并根据需要回显它。
如果您位于 The Loop ,它会是这样的:
$rating = get_post_meta(get_the_ID(), 'rating', TRUE);
编辑:
您已经知道您的 ID 到评级映射(我可能会将此映射设置为全局数组,或某些定义,或类似的东西)。只需使用它来查找要输出的字符串:
$ratings = array(
1 => 'G',
2 => 'PG',
3 => 'R'
);
if(array_key_exists($rating, $ratings)) {
echo "Content Rating: $ratings[$rating]";
} else {
echo "Content Rating: Unrated";
}
关于php - 显示自定义字段选择 - Wordpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146724/