为内部目的评定物品等级

时间:2012-04-09 作者:tom

我们从很多为网站撰写文章的用户开始。我们希望现在对每篇文章进行内部评级,以便对拥有最佳文章的用户进行概述。有没有人知道一个插件可以对文章进行内部评级,这样他们就不会出现在网站上,只会出现在WP的仪表板上。

谢谢

汤姆

3 个回复
SO网友:Adam

我对这个问题的解决方案是在所有帖子中添加一个自定义字段/元框,您可以从下拉菜单中选择所需的评分。

然后,我还会在帖子列表屏幕中添加您分配给帖子的内部评级,以便您可以一目了然地查看每个帖子的评级,而无需单击“编辑”来查看帖子是否有评级。如果一个帖子没有评级,那么它会列出“未评级”。

事实上,我在我的一个网站上做了一些非常类似的事情,这里有一些基本代码可以帮助您实现这一点。。。

下面是两个简单的步骤。

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 );
使用自定义字段来解决此问题的好处在于,您不仅可以在后端查询内部评级字段中保存的数据,还可以在前端查询这些数据。虽然您现在不需要这些数据,但将来可能希望在前端主题的某个位置查询该值。如果需要的话,这种能力是存在的。

SO网友:developdaly

您可以使用Polldady评分,并将其显示给登录的编辑、作者等。

<?php
    if ( current_user_can( \'manage_options\' ) {
        echo polldaddy_get_rating_html();
    }
?>
如果您只想在管理端执行此操作,您需要创建一个元框以显示在编辑后屏幕上,您可以在此处学习如何操作:add_meta_box()

SO网友:offroff

您有多种选择,但我认为一个好的简单解决方案是添加自定义分类法。

在函数中。php,添加以下代码:

add_action( \'init\', \'init_register\', 0 );

function init_register()
{
register_taxonomy(\'admincategory\',\'post\', array(
\'labels\' => array(
    \'name\' => \'Admincategories\',
    \'singular_name\' => \'Admincategory\',
    \'add_new\' => \'Add new\',
    \'add_new_item\' => \'Add new Admincategory\',
    \'edit_item\' => \'Edit Admincategory\',
    \'new_item\' => \'New Admincategory\',
    \'view_item\' => \'Show Admincategory\'
 ),
 \'public\' => false,
 \'show_ui\' => true,
 \'hierarchical\' => true,  // this can be removed if you like that better, see more options on http://codex.wordpress.org/Function_Reference/register_taxonomy
));
}
然后你就有了你需要的,但这比线性评级要好。您将非常灵活,可以找到许多使用此功能的新方法。

结束

相关推荐

Sort plugins by rating

当我想安装一个新的Wordpress插件时,我会搜索我想要的插件,并收到一个结果列表。有没有办法按评级或名称对结果进行排序?如果没有,它将是Wordpress的一个有用的补充。