【问题标题】:Wordpress get metabox info for selected custom post typeWordpress 获取所选自定义帖子类型的元框信息
【发布时间】:2016-03-04 08:20:01
【问题描述】:

我有一个表单,在 wordpress 中创建为插件。表单中有一个下拉选择菜单,其中填充了来自称为“歌手”的自定义帖子类型的所有条目。

即“歌手一、歌手二、歌手三”

在这种自定义帖子类型中,每个歌手都有元框信息,我感兴趣的信息是“singer_gender”。选择歌手后,我想将变量传递给该表单上的隐藏字段,其中包含“男性”或“女性”

因此,例如,如果选择了歌手 1,并且是男性,我的表单将具有以下隐藏字段:

<input type="hidden" name="singer_gender" id="singer_gender" value="<?php echo singer_gender; ?>" />

有没有办法做到这一点?

【问题讨论】:

  • 您可以使用 javascript 和/或 ajax 执行此操作 - 但为什么不在您处理表单提交时执行此操作?检查下拉列表的值,然后获取它的元值,并根据需要使用您的值。

标签: php wordpress forms


【解决方案1】:

您可以使用get_post_meta 检索在元框中输入的值。

如果singer_gender 是元框键,您的代码可能如下所示:

<?php
  global $post;
  $single_gender = get_post_meta($post->ID, 'singer_gender', true);
?>

<input type="hidden" name="singer_gender" id="singer_gender" value="<?php echo $singer_gender; ?>" />

【讨论】:

    【解决方案2】:

    您可以将性别存储在选择选项的数据值中。

    像这样:

    $('#person').change(function(){
    	var gender = $(this).find('option:checked').attr('data-gender');
        $('#gender_hidden').val(gender);
        $('#gender').val(gender);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
        <input type="hidden" id="gender_hidden" />
        <input type="text" id="gender" />
        <select id="person" onchange="change(this);">
            <option value="Person_1" data-gender="male">Person 1</option>
            <option value="Person_2" data-gender="female">Person 2</option>
            <option value="Person_3" data-gender="male">Person 3</option>
        </select>
    </form>

    使用get_post_meta生成HTML

    <?php
    $args = array('post_type'=>'people');
    
    $people = WP_Query($args);
    if ($people->have_posts()) ?>
        <input id="gender" name="gender" />
        <select name="person">
            <?php while ($people->have_posts()){ $people->the_post();
                global $post;
                $name = get_the_title();
                $slug = $post->post_name;
                $gender = get_post_meta($post->ID, 'gender', true);
            ?>
            <option data-gender="<?php echo $gender; ?>" value="<?php echo $slug; ?>"><?php echo $name; ?></option>
            <?php } ?>
        </select>
    <?php }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2016-04-03
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多