从一个自定义帖子类型填充另一个自定义帖子类型的下拉列表

时间:2016-05-20 作者:Jason

[已解决->请参阅此问题的最后一条评论]

在自定义post类型CPT\\U A中,我通过自定义metabox表单字段保存first\\u name和last\\u name(它们不是分类法):

update_post_meta( $post_id, \'first_name\', esc_attr( $_POST[\'first_name\'] ) )
update_post_meta( $post_id, \'last_name\', esc_attr( $_POST[\'last_name\'] ) )
在数据库中,它如下所示:

post_id, meta_key, meta_value
186, first_name, John
186, last_name, Doe
323, first_name, Bill
323, last_name, Jones
在自定义帖子类型CPT\\U B中,我试图创建一个下拉列表,该下拉列表由CPT\\U a=>first\\u name和last\\u name填充。

如何循环查看名字和姓氏?

在Gareth Gillman的帖子的帮助下,我移除了foreach循环,移动了<option> 进入while循环并将get\\u the\\u id()更改为$query1->post->id。

这是可行的解决方案。如果有更雄辩的方式,请评论。

<select name="mailing_name" id="mailing_name">

<?php 

$select_array = array();

$args = array (
    \'post_type\' => \'fooBar\',
);

$query1 = new WP_Query( $args );

while ( $query1->have_posts() ) {

    $query1->the_post(); 

    $first_name = get_post_meta( $query1->post->ID, \'first_name\', true);
    $last_name = get_post_meta( $query1->post->ID, \'last_name\', true);

    echo \'<option value="">\' . $first_name . \'&nbsp;\' . $last_name . \'</option>\';

}

wp_reset_postdata();
?>

</select>

1 个回复
SO网友:Gareth Gillman

您需要使用wp\\u query查询数据库,以从CPT获取所有帖子,将metabox内容保存到一个数组中,然后打印该数组。

未经测试,但应能正常工作(我希望):

<?php
$select_array = array();
$args = array (
 \'post_type\' => \'your_cpt\',
);
$query1 = new WP_Query( $args );
while ( $query1->have_posts() ) {
 $query1->the_post();
 $select_array[firstname] = get_post_meta(get_the_id(), \'the_meta_key\', true);
$select_array[lastname] = get_post_meta(get_the_id(), \'the_meta_key\', true);
}
wp_reset_postdata();
?>

<select name="mailing_name" id="mailing_name">
 <?php
 foreach ($select_array as $option) {
  echo \'<option value="">\'.$option[firstname].\'&nbsp;\'.$option[lastname].\'</option>\';
 }
 ?>
</select>

相关推荐

如何在WordPress开发中添加带有ACF自定义字段ID的自定义metabox字段

我是wordpress开发的新手,我在我的项目中安装了高级自定义字段插件,并创建了两个文本字段名称&;我还创建了一个插件,可以在帖子中创建一个带有文本框的元框。现在在帖子中,我将获得自定义字段名称(&A);电子邮件和我的自定义元框旁边将出现,但我必须将我的元框附加到名称字段旁边,即在名称字段和电子邮件字段之间。我的metabox代码如下。请任何人帮帮我//Creating the custom meta box function my_notice_meta_box() {