在保存帖子时创建类别,并在该类别中保存帖子

时间:2014-09-06 作者:Bernie

我想做的与this one 但我们在获取信息方面有点不同。

基本上,当用户创建帖子时(在suggestions 自定义帖子类型),但它没有立即发布,但处于待定审阅状态。我正在使用重力表单,以便用户可以在前端创建帖子/建议。我将此前端表格附在特定页面上。

我想要的是,在保存用户的帖子(待审核)时,将根据name and slug of the current page 表格附于此处。当然,如果它已经存在,就不应该再创建它(例如,有另一个用户首先发布了建议)。

例如:用户在演员页面上发布了建议(电影帖子类型)。此页面包含slug演员。如果他是第一个在此页面上提出建议的人,则应在建议帖子类型下创建一个类别,并将其帖子(或建议)保存在名称为Actors和slug的帖子(或建议)中。如果他不是第一个提出建议的人,那么就没有必要重新创建类别,因为它之前已经由某人创建,只需要保存在该类别下(只要类别存在且不创建,就可以通过重力表单处理)。

我不确定要在函数中放入什么。php。有人能帮我吗?我希望我在这里说清楚了。

1 个回复
SO网友:Seamus Leahy

这里您需要使用的主要内容是save_post 在保存帖子后立即挂接WordPress以执行代码。Read up on the save_post hook on the WordPress codex first and then come back here.

下一部分是将帖子分配给分类术语。这可以很容易地用wp_set_post_terms() function.

你最终会得到一些基本上类似于下面的代码的东西,你可以将这些代码粘贴到你的functions.php:

<?php
function save_suggestions_term( $post_id ) {
  // Check the post-type of the post being saved is our type
  $suggestions_post_type_slug = \'suggestion\';
  if ( $suggestions_post_type_slug != $_POST[\'post_type\'] ) {
    return; // Not ours - stop
  }

  // You\'ll need to figure out the name of your category.
  // You\'ll have $_REQUEST that you can get the fields that were just saved 
  $suggestion_term = \'Actors\';

  $taxonomy = \'category\'; // The name of the taxonomy the term belongs in
  wp_set_post_terms( $post_id, array($suggestion_term), $taxonomy );

}
add_action( \'save_post\', \'save_suggestions_term\' );
请注意wp_set_post_terms 如果该术语不存在,将创建该术语,或将其添加到现有术语中。这将在每次再次保存帖子时运行,这意味着如果更改用于创建分类术语名称的输入字段的值,分类术语也将更改。

结束

相关推荐

Show Pages in Categories

通过将此代码添加到函数中,我创建了category函数。php:function page_category() { register_taxonomy_for_object_type(\'category\', \'page\'); } // Add to the admin_init hook of your theme functions.php file add_action( \'init\', \'page_category\' ); 但问