自定义帖子类型标题由其他自定义帖子类型设置

时间:2017-07-27 作者:Jacob Thygesen

我正在尝试制作一个小插件,可以创建一个有培训师的团队。团队是一个定制的职位类型,培训师是一个定制的职位类型。当我创建一个新团队时,我在一个组合框中阅读所有培训师,其中自定义帖子的标题类型traener 是培训师的名称。

我的问题是,当我在标题框中键入团队名称时,会使用traener 自定义帖子类型标题。

这就是我到目前为止在创建register the Custom Post Type并使用trainer和som其他信息创建metabox时想到的。

global $post;
$title = $post->post_title;
echo "<script>alert (\'".$title.")</script>";
$args = array(
   \'post_type\' => \'traener\',
   \'posts_per_page\' => -1,
   \'orderby\' => \'post_title\', // meta_value\',
   \'order\'   => \'ASC\',
);
$my_query = new WP_Query($args);
  if ($my_query->have_posts()) {
    while ($my_query->have_posts()) : $my_query->the_post();
      if ($selectedtrainer == get_the_title()) {
        echo \'<option value="\'.esc_html( get_the_title() ).\'"selected=selected>\'.esc_html( get_the_title() ).\'</option>\';                           
      } else {
        echo \'<option value="\'.esc_html( get_the_title() ).\'">\'.esc_html( get_the_title() ).\'</option>\'; 
      } 
    endwhile; 
  }
wp_reset_postdata();

$post->post_title = $title;
是否有任何方法可以将帖子标题从traener 自定义post类型,因此slug将基于team 标题

我尝试过使用save\\u post操作来操纵标题,但运气不好,这也不是我想要的,因为使用制表器时,slug是在后台生成的(ajax/javascript)。

真的希望有人能在正确的方向上帮助我

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

我发现我只需要使用

$post->post_name 
而不是

$post->post_title 
因为$post->post_name 如果不定义标题而另存为草稿,则会保存段塞并保存自动生成的段塞。

所以代码如下

global $post;
$slug = $post->post_name;
echo "<script>alert (\'".$title.")</script>";
$args = array(
   \'post_type\' => \'traener\',
   \'posts_per_page\' => -1,
   \'orderby\' => \'post_title\', // meta_value\',
   \'order\'   => \'ASC\',
);
$my_query = new WP_Query($args);
if ($my_query->have_posts()) {
    while ($my_query->have_posts()) : $my_query->the_post();
        if ($selectedtrainer == get_the_title()) {
           echo \'<option value="\'.esc_html( get_the_title() ).\'"selected=selected>\'.esc_html( get_the_title() ).\'</option>\';                           
        } else {
            echo \'<option value="\'.esc_html( get_the_title() ).\'">\'.esc_html( get_the_title() ).\'</option>\'; 
        } 
    endwhile; 
}
wp_reset_postdata();

$post->post_name = $slug;
希望这能对其他人有所帮助。

结束

相关推荐