Wordpress表单短代码



我在WP中为表单创建了一个快捷代码。现在,我需要使其动态化,并为帖子和分类添加带有<options><select>标记。

function shortcode_form(){
$form = "<form method='post'>
<select name='escape-date' id='escape-date' required>
/* NEED TO ADD FUNCTION AND LOGIC TO DISPLAY POSTS */                        
</select>
<select name='escape-date' id='escape-date' required>
/* NEED TO ADD FUNCTION AND LOGIC TO DISPLAY TAXONOMIES ASSOCIATED WITH SELECTED POST ABOVE */                        
</select>
</form>";
return $form;
}

有两个问题:

1-$form是一个string,所以我不能在里面添加函数。我有哪些选项?

2-更改第二个<select>。只有JS才能做到这一点吗?

您可以使用以下内容用帖子列表填充<select>

/** @var wpdb $wpdb */
global $wpdb;
$posts = query_posts(['post_type' => 'post', 'nopaging' => true]);
$posts_options_tags = array_map( function ( $post ) {
return "<option value='{$post->ID}'>{$post->post_title}</option>";
}, $posts );
$posts_options_tags = implode('', $posts_options_tags);
$form = "<form method='post'>
<select name='post_id' id='post_id' required>
<option>Select a post</option>
$posts_options_tags                        
</select>
<select name='escape-date' id='escape-date' required>
/* NEED TO ADD FUNCTION AND LOGIC TO DISPLAY TAXONOMIES ASSOCIATED WITH SELECTED POST ABOVE */                        
</select>
</form>";