如果使用POST元查询更新了值,如何让Metabox自定义域显示选中?

时间:2019-04-17 作者:Esmond

我有两个单选按钮作为页面/帖子的自定义元框字段。一个单选按钮的值为“启用”,另一个单选按钮的值为“禁用”。我的单选按钮只有在手动进入页面/帖子进行检查,然后更新页面/帖子时才会保持选中状态。如果我通过post meta查询更改该字段的post meta值,则不同的单选选项不会显示为选中状态。

我正在运行的查询是这样的,它是有效的。我检查了phpmyadmin中的值。在编辑屏幕上,metabox仍不显示正在检查的正确单选按钮。

function my_action() {
    global $wpdb; 

      $args = array(
        \'post_type\' => array(\'post\',\'page\'), 
        \'post_status\' => \'publish\', 
        \'posts_per_page\'   => -1 // Get every post
    );
    $posts = get_posts($args);
    foreach ( $posts as $post ) {
        // Run a loop and update every meta data
        update_post_meta( $post->ID, \'vmo_code_radio_value
\', \'enable\' );
    }
wp_die(); // this is required to terminate immediately and return a proper response
}

这是内容回调。

function vmo_code_enable_html($post)
{

  $meta = get_post_meta($post->ID);
$vmo_code_radio_value = ( isset( $meta[\'vmo_code_radio_value\'][0] ) && \'\' !== $meta[\'vmo_code_radio_value\'][0] ) ? $meta[\'vmo_code_radio_value\'][0] : \'\';

  wp_nonce_field(\'vmo_code_control_meta_box\', \'vmo_code_control_meta_box_nonce\'); // Always add nonce to your meta boxes!
  ?>
<style type="text/css">
.post_meta_extras p {
    margin: 20px;
}

.post_meta_extras label {
    display: block;
    margin-bottom: 10px;
}
</style>
<div class="post_meta_extras">
    <p>    
    <label>Enable<input type="radio" name="vmo_code_radio_value" value="enable" <?php checked(  \'enable\' ,$vmo_code_radio_value  ); ?>></label>
    <label>Disable<input type="radio" name="vmo_code_radio_value" value="disable" <?php checked(  \'disable\' ,$vmo_code_radio_value  ); ?> ></label>
    </p>
    <?php
}

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

So your ch类eckbox个 code works f我ne. But型 t型h类e problem级 我s.. t型h类e m级et型一 key.

&#x个A.;&#x个A.;

我f you do v一r_dum级p( $m级et型一[\'vm级o_code_r一d我o_v一lue\'] );, you\'d g级et型 一 NULL bec一use t型h类e m级et型一 key cont型一我ns 一 newl我ne 一nd 我t型 w我ll be s一ved 一s 我s:

&#x个A.;&#x个A.;
upd一t型e_post型_m级et型一( $post型-&g级t型;我D, \'vm级o_code_r一d我o_v一lue&#x个A.;\', \'en一ble\' );&#x个A.;
&#x个A.;&#x个A.;

But型 我f you do:

&#x个A.;&#x个A.;
v一r_dum级p( $m级et型一[\'vm级o_code_r一d我o_v一lue&#x个A.;\'] ); // not型e t型h类e newl我ne&#x个A.;
&#x个A.;&#x个A.;

Th类en you\'d see t型h类e proper v一lue: en一ble.

&#x个A.;&#x个A.;

So t型h类e f我x个 我s s我m级ple: rem级ove t型h类e newl我ne. 我.e.

&#x个A.;&#x个A.;
upd一t型e_post型_m级et型一( $post型-&g级t型;我D, \'vm级o_code_r一d我o_v一lue\', \'en一ble\' );&#x个A.;
&#x个A.;&#x个A.;

A.nd by t型h类e w一y, t型o ret型r我eve 一 s我ng级le v一lue of 一 m级et型一d一t型一, you could use g级et型_post型_m级et型一( &#x个A.;<型;post型 我D&g级t型;, \'key\', t型rue ) l我ke so 我n your c一se:

&#x个A.;&#x个A.;
$vm级o_code_r一d我o_v一lue = g级et型_post型_m级et型一( $post型-&g级t型;我D, \'vm级o_code_r一d我o_v一lue\', t型rue );&#x个A.;
&#x个A.;

相关推荐

WordPress AJAX过滤器:为不同的输出样式创建两个循环?

我有两个不同的页面,带有过滤器。这两个页面具有不同的布局和样式。对于一个页面,我有三个不同的过滤器,其中输出和样式是相同的。对于“新闻过滤器”,我需要一种不同的样式。所以我想我需要另一个循环?如何输出两个不同的循环?我当前的功能。php是:function misha_filter_function(){ $args = array( \'orderby\' => \'date\', // we will sort posts by date \'order\