保存bbpress回复表单中选定下拉列表中的元框数据

时间:2020-05-21 作者:Daniel

我希望通过下拉选择列表自定义bbpress回复表单区域。我之前在bbpress上找不到任何报道类似案件的帖子。参考带有链接的帖子“从所选下拉列表保存元框数据”https://stackoverflow.com/questions/17755973/save-meta-box-data-from-selected-dropdown-list我为bbpress回复帖子条件准备了类似的代码,但未能实现目标。

 add_action( \'bbp_theme_before_reply_form_content\', \'so_custom_meta_box\' );
//add_action( \'add_meta_boxes\', \'so_custom_meta_box\' );

function so_custom_meta_box($post){
    add_meta_box(\'so_meta_box\', \'Custom Box\', \'custom_element_grid_class_meta_box\', $post->post_type, \'normal\' , \'high\');
}

add_action(\'bbp_theme_before_reply_content\', \'so_save_metabox\');

function so_save_metabox(){ 
    global $post;
    if(isset($_POST["custom_element_grid_class"])){
         //UPDATE: 
        $meta_element_class = $_POST[\'custom_element_grid_class\'];
        //END OF UPDATE

        update_post_meta($reply_id, \'custom_element_grid_class_meta_box\', $meta_element_class);
        //print_r($_POST);
    }
}
function custom_element_grid_class_meta_box($post){
    $reply_id = bbp_get_reply_id();
    $meta_element_class = get_post_meta($reply_id, \'custom_element_grid_class_meta_box\', true); //true ensures you get just one value instead of an array
    ?>   
    <label>Choose the size of the element :  </label>

    <select name="custom_element_grid_class" id="custom_element_grid_class">
      <option value="normal" <?php selected( $meta_element_class, \'normal\' ); ?>>normal</option>
      <option value="square" <?php selected( $meta_element_class, \'square\' ); ?>>square</option>
      <option value="wide" <?php selected( $meta_element_class, \'wide\' ); ?>>wide</option>
      <option value="tall" <?php selected( $meta_element_class, \'tall\' ); ?>>tall</option>
    </select>
    <?php
}

谁能提供善意的帮助来解决这个问题?谢谢

1 个回复
SO网友:Daniel

我添加了一个显示内容的部分,它引用了以前的一篇带有链接的文章https://bbpress.org/forums/topic/add-custom-text-fields-to-reply-form/. 下面的代码可以提供选项供用户选择。但无法显示选择结果。我不确定选择结果是否正确添加到metabox中,因为我无法使用调试功能。另一个问题是,“字段1”被插入到以前的所有回复帖子中。有没有人能进一步提供帮助来解决这个问题

add_action( \'bbp_theme_before_reply_form_content\', \'so_additional_content\' );
function so_additional_content($post){
    $reply_id = bbp_get_reply_id();
    $meta_element_class = get_post_meta($reply_id, \'custom_element_grid_class\', true);
    //$meta_element_class = get_post_meta($reply_id, \'custom_element_grid_class_meta_box\', true); //true ensures you get just one value instead of an array
    ?>   
    echo \'<label>Choose the size of the element :  </label>

    <select name="custom_element_grid_class" id="custom_element_grid_class">
      <option value="normal" <?php selected( $meta_element_class, \'normal\' ); ?>>normal</option>
      <option value="square" <?php selected( $meta_element_class, \'square\' ); ?>>square</option>
      <option value="wide" <?php selected( $meta_element_class, \'wide\' ); ?>>wide</option>
      <option value="tall" <?php selected( $meta_element_class, \'tall\' ); ?>>tall</option>
    </select>\'
    <?php
}



add_action(\'bbp_new_reply_post_extras\', \'so_save_metabox\');

function so_save_metabox(){ 
    global $post;
    if(isset($_POST["custom_element_grid_class"])) {
         //check the capability: if ( !current_user_can( \'edit_post\', $post->ID ))  return $post->ID;
        $meta_element_class = $_POST[\'custom_element_grid_class\'];
        //END OF UPDATE

          update_post_meta($reply_id, \'custom_element_grid_class\', $meta_element_class);
        //update_post_meta($reply_id, \'custom_element_grid_class_meta_box\', $meta_element_class);
        //print_r($_POST);

    }
}


add_action(\'bbp_theme_before_reply_content\', \'so_show_metabox\');

function so_show_metabox() {
    $meta_element_class = get_post_meta($reply_id, \'custom_element_grid_class\', true);
  //$meta_element_class = get_post_meta($reply_id, \'custom_element_grid_class_meta_box\', true);
  // the problem is "Field 1" appear in every reply post
  echo "Field 1: ".$meta_element_class."End of testing "."<br>";  
}

相关推荐

将自定义Metabox添加到媒体库自定义窗口小部件

我正在实现一个自定义小部件来创建徽标滑块。最初的代码运行得很好,但当我在附件屏幕中添加了一个元盒以允许用户向图像添加外部链接时,我遇到了一些问题。我想做的是添加元盒,保存它的值,当小部件加载到前端时,检索用户为每个图像添加的链接。这些图像没有附加到任何帖子,目前我可以看到新的元盒,但只有当用户单击媒体库中每个图像的编辑链接时,才可以编辑它。我更希望看到媒体库主选择屏幕上的框。我也无法获取字段值,我认为这是因为代码中没有加载图像ID。public function initMetabox() {