我已经在我的平台上添加了一个内容分级系统,作者可以在其中选择他们的帖子适合的受众。目前,这些选项可用:
未评级
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,那么我想
echo \'Content Rating: PG\';
或者如果是默认(未评级),我想
echo \'Content Rating: Unrated\';
. 这怎么可能?理想情况下,在我的平台流量很大的情况下,服务器上的解决方案是轻量级的。
SO网友:s_ha_dum
你已经在做你需要做的事情了,但是在另一个环境中。
$value = get_post_meta($post->ID, \'rating\', true);
获取该值并格式化以供显示。
Edit: 我安装了你的整个代码块。您存储的是您的密钥,而不是您的评级值。你需要访问它$ratings
再次数组以提取值。
$ratings = array(
1 => \' G \',
2 => \' PG \',
3 => \' R \',
);
if (!empty($ratings[$value])) {
echo \'<p>Content Rating : \'.$ratings[$value].\'</p>\';
} else {
echo \'<p>Content Rating : Unrated</p>\';
}
然而,甚至在我发现问题之前,我就看到了内容回声。“内容分级:1”,而不是“内容分级:G”。我不知道你为什么声称什么也没看到。如果您仍然没有看到任何内容,则说明有问题,但此代码没有问题。
我没有更改您的原始代码块。