我对这个问题的解决方案是在所有帖子中添加一个自定义字段/元框,您可以从下拉菜单中选择所需的评分。
然后,我还会在帖子列表屏幕中添加您分配给帖子的内部评级,以便您可以一目了然地查看每个帖子的评级,而无需单击“编辑”来查看帖子是否有评级。如果一个帖子没有评级,那么它会列出“未评级”。
事实上,我在我的一个网站上做了一些非常类似的事情,这里有一些基本代码可以帮助您实现这一点。。。
下面是两个简单的步骤。
1) 将以下内容粘贴到函数中。php文件,该文件将创建一个名为“内部评级”的下拉自定义字段(NOTE you can change the values of your drop down menu to suit your purpose, be it descriptive words like in my example or a number based rating);
add_action( \'add_meta_boxes\', \'add_internal_rating\' );
function add_internal_rating() {
add_meta_box(\'wpt_internal_rating\', \'Internal Rating\', \'wpt_internal_rating\', \'post\', \'normal\', \'high\');
}
// The Internal Rating Metabox
function wpt_internal_rating() {
global $post;
echo \'<input type="hidden" name="ratingtmeta_noncename" id="ratingmeta_noncename" value="\' .
wp_create_nonce( plugin_basename(__FILE__) ) . \'" />\';
$location = get_post_meta($post->ID, \'_rating\', true);
echo \'<select name="_rating">
<option value="good" \' . (selected( $location , \'good\', true)) . \'>Good</option>
<option value="bad" \' . (selected( $location , \'bad\', true)) . \'>Bad</option>
<option value="ugly" \' . (selected( $location , \'ugly\', true)) . \'>Ugly</option>
</select>\';
}
// Save the Metabox Data
function wpt_save_ratings_meta($post_id, $post) {
if ( !wp_verify_nonce( $_POST[\'ratingmeta_noncename\'], plugin_basename(__FILE__) )) {
return $post->ID;
}
if ( !current_user_can( \'edit_post\', $post->ID ))
return $post->ID;
$ratings_meta[\'_rating\'] = $_POST[\'_rating\'];
foreach ($ratings_meta as $key => $value) {
if( $post->post_type == \'revision\' ) return;
$value = implode(\',\', (array)$value);
if(get_post_meta($post->ID, $key, FALSE)) {
update_post_meta($post->ID, $key, $value);
} else {
add_post_meta($post->ID, $key, $value);
}
if(!$value) delete_post_meta($post->ID, $key);
}
}
add_action(\'save_post\', \'wpt_save_ratings_meta\', 1, 2);
2)接下来,要将以下代码添加到函数中。php文件,它将在您的帖子列表屏幕上显示评级帖子列;
if ( !function_exists(\'internal_rating_column\') ) {
function internal_rating_column($cols) {
$cols[\'rating\'] = __(\'Rating\');
return $cols;
}
function internal_rating_value($column_name, $post_id) {
if ( \'rating\' == $column_name ) {
$rating = get_post_meta( $post_id, \'_rating\', true );
echo $rating;
} else {
echo __(\'Not rated\');
}
}
}
add_filter( \'manage_posts_columns\', \'internal_rating_column\' );
add_action( \'manage_posts_custom_column\', \'internal_rating_value\', 10, 2 );
使用自定义字段来解决此问题的好处在于,您不仅可以在后端查询内部评级字段中保存的数据,还可以在前端查询这些数据。虽然您现在不需要这些数据,但将来可能希望在前端主题的某个位置查询该值。如果需要的话,这种能力是存在的。