Wordpress添加注释列并保存自定义数据

时间:2013-12-12 15:22:28

标签: php mysql wordpress

在最近的项目中,客户需要在评论管理区域输入<select />。我们的想法是,网站所有者逐一阅读每条评论,并且需要记住女巫评论对他来说很重要,因此<select />将有两个输入&#34;感兴趣&#34; - &#34;没有兴趣&#34;。

在wordpress评论admin上创建自定义列,由于Wordpress Codex

而导致的痛苦不是很大
/* Display custom column */
function display_posts_stickiness( $column, $post_id ) {
    echo '<form method="post">';
    echo '<input type="hidden" name="populate_importancy" value="1" />';
    echo '<select name="importanceList[]">';
    echo '<option value="1">Please select</option>';
    echo '<option value="2">Importnat</option>';
    echo '<option value="3">No important</option>';
    echo '</select>';
    echo '<input type="submit" id="submit" value="Choose" />';
    echo '</form>';
}

add_action( 'manage_comments_custom_column' , 'display_posts_stickiness', 10, 2 );

 /* Add custom column to post list */
 function add_sticky_column( $columns ) {
     return array_merge( $columns, 
         array( 'sticky' => __( 'Comment Importance', 'importancy_com_txt' ) ) );
 }

 add_filter( 'manage_edit-comments_columns' , 'add_sticky_column' );

直到所有人都像魅力一样工作,列和下拉列表已经在新评论管理栏上显示。

当我不想在数据库中保存用户选项时,我的主要问题就从这里开始。

add_action( 'save_post', 'save_importancy' );

function save_importancy( $comment_id ) {
    foreach($_POST["importanceList"] as $s) {  
        //'importancy' column have been added under cns_comments table
        $insertSQL = sprintf("INSERT INTO cns_comments (importancy) VALUES(LAST_INSERT_ID(),". $s . ")"); 
    }  
}

我不是PHP开发人员,我的PHP知识现在有限,并且在我发布问题之前已经存在了几天。

我真的很感激这方面的一些帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

$insertSQL = sprintf("INSERT INTO cns_comments (id, importancy) VALUES(LAST_INSERT_ID(),'%s')", $s); 

您的sql语法和sprintf的使用不正确。您正在尝试编写2个字段,但只指定了导入性。假设id是最后一个插入id的字段,上面的方法就可以了。 此外,您实际上需要运行查询。由于你使用的是wordpress,你应该只使用它们的内部db类:

function save_importancy( $comment_id ) {
    global $wpdb;
    foreach($_POST["importanceList"] as $s) {  
        //'importancy' column have been added under cns_comments table
        $insertSQL = $wpdb->prepare("INSERT INTO cns_comments (id, importancy) VALUES (LAST_INSERT_ID(), %s)", $s);
        $wpdb->query($insertSQL);
    }  
}

http://codex.wordpress.org/Class_Reference/wpdb

http://php.net/sprintf