使用Foreach循环在Wordpress管理菜单中保存Post Meta

时间:2015-01-14 22:50:19

标签: php wordpress

这是长短的:

我想在Wordpress中为post meta标签添加一个全局控制器。我已经在我们的主题中建立了一个Wordpress自定义管理页面。我还已经为各个页面添加了元框,以更加优雅的方式存储键值对。我已经能够在foreach循环中调用所有键值对,以便它们显示在管理页面中。我很难从管理面板页面上的这些值获取输入,以便在submit_button()时正确更新;点击。我已经获得了update_post_meta函数来彻底擦除以前的值,但是我无法获得update_post_meta函数来将$ _POST值正确地传递给数据库中的值。

我知道以下代码无效,因为它是两次尝试的中途。任何帮助表示赞赏:

 $pages = get_pages(); 
      foreach ( $pages as $page ) {
        $post_id = $page->ID;
        $meta = get_post_meta($post_id);
        /* $value1 = get_post_meta( $post_id, 'value1', true );
        $value2 = get_post_meta( $post_id, 'value2', true ); */

        echo '<h3>' . $page->post_title . '</h3>';
        echo '<label for="options_value1_' . $post_id . '">Value 1:</label>';
        echo '<input type="text" id="options_value1_' . $post_id . '" name="options_value1" value="' . $meta['value1'][0] . '" size="25" /><br />';
        echo '<label for="options_value2_' . $post_id . '">Value 2:</label>';
        echo '<input type="text" id="options_value2_' . $post_id . '" name="options_value2" value="' . $meta['value2'][0] . '" size="25" /><hr />';

        }

        foreach ( $pages as $page ) {
            update_post_meta($post_id, 'value1', $_POST('value1');
            update_post_meta($post_id, 'value2', $_POST('value2');
        }

1 个答案:

答案 0 :(得分:0)

希望这会有所帮助: $ post_id在第一个循环中定义,但不在第二个循环中定义。 您在第二个循环中也有语法错误。您没有关闭update_post_meta()的括号,并且您没有使用$ _POST的大括号。它应该是$ _POST [],而不是$ _POST()。 此外,您要查找的POST参数是options_value1和options_value 2,因为这些是第一个循环中字段的名称。

第二个循环应该是这样的:

foreach ( $pages as $page ) {
$post_id = $page->ID;
    update_post_meta($post_id, 'value1', $_POST['options_value1']);
    update_post_meta($post_id, 'value2', $_POST['options_value2']);
}

希望它有所帮助。