使用自定义字段创建自定义帖子类型

时间:2012-03-01 21:28:16

标签: wordpress customization

这是我的第一个wordpress网站。我正在创建一个本地社区网站,我希望具有与freecycle类似的功能,即用户可以免费向其他人提供内容。所以他们需要成为一个下拉框来说明这件事是想要的还是提供的。项目名称的标题字段。然后该项目的详细信息。上传项目的图像和位置字段,人们必须从中获取。也可能是联系号码字段。理想情况下,我想要一个复选框系统,以便如果该项目被提供给某人,用户可以勾选一个提示的框,然后该帖子可能会被分配一个等待收集的类别,其文本变为灰色并消失的帖子列表。当它被收集时,他们可以点击另一个框,然后给它一个归档类别。我甚至不知道这是否有可能......

如果是这样,那么最好的方法是什么?考虑到我希望能够在网站的其他区域使用这些帖子,例如在侧边栏中显示最近提供的项目。我还希望能够添加窗体的最小化版本,该版本将位于某些页面的侧边栏中,因此用户可以在不同的页面上添加项目。

3 个答案:

答案 0 :(得分:2)

首先,我建议您自己编写自定义帖子类型,如果您按照WordPress Codex中的说明进行操作并不困难:http://codex.wordpress.org/Function_Reference/register_post_type(Codex是您最好的朋友,当它到来时到WordPress开发!)

如果您仍然遇到问题,可以使用许多插件来帮助创建自定义帖子类型,例如:http://wordpress.org/extend/plugins/custom-post-type-ui/

最后,要将自定义字段添加到自定义帖子类型中,我建议使用我经常使用的一个很棒的插件:http://www.advancedcustomfields.com/(我发现它非常可靠,节省了大量时间,而不是手动创建自定义元字段)

我绝对建议您自己调查如何创建自定义帖子类型和自定义元字段 - 如果您没有时间在此版本上执行此操作,请在下一个版本上留出时间。知道如何手动完成所有操作而不是依赖插件是很好的。

希望有所帮助!

答案 1 :(得分:0)

在functions.php中使用此代码

function foobar_func( $atts )
{ 
   global $post; 
   $key=$atts['name']; 
   if(empty($key)) return; 
   return get_post_meta($post->ID, $key, true); 
} 

add_shortcode( 'foobar', 'foobar_func' );  

显示

[foobar name=custom_field_name]  

在您的帖子页面。

答案 2 :(得分:0)

有两种方法:

  • 简便方式-有适用于它的作曲程序包-wp_stem

    以下是创建自定义帖子类型并向其添加字段的方法:

    PostType::create('custom_post_name')-> meta_box(array(
      'id'        => 'your_id',
      'title'    => 'your_title'
     ))->field(array(
       'name'      => 'your_field_name',
       'label'     => 'your field label',
       'value'     => 'your_field_default_value',
       'type'      => 'your_field_type'
    ));
    

    如何安装和使用它,请参见-> github


  • WordPress方式(4个步骤)-

    1。创建帖子类型

    function create_post_type() {
        register_post_type( 'acme',
          array(
            'labels' => array(
              'name' => __( 'acme' )
            ),
            'public' => true,
            'has_archive' => true,
          )
        );
      }
      add_action( 'init', 'create_post_type' );
    

    2。添加元框

    function add_custom_metabox(){
        add_meta_box(
            "your_id",
            "Your Title",
            "custom_metabox_content",
            "post"
        );
    }
    add_action("add_meta_boxes", "add_custom_metabox");
    

    3。将字段添加到元框内容

    function custom_meta_box_content($post_id){
        $value = get_post_meta($post_id, "custom_meta_field", true);
    
        echo '<input type="text" name="custom_meta_field" value="'. $value                                             .'">';
     }
    

    4。收听保存帖子钩子并更新值(当您从管理面板中单击更新帖子时)。

    function on_save_post($post_id){
        $meta_value = isset($_POST["custom_meta_field"]) ?  $_POST["custom_meta_field"]  : false;
    
        if (current_user_can("edit_posts") && $meta_value){
            update_post_meta($post_id,"custom_meta_field", $meta_value);
        }
     }
     add_action("save_post", "on_save_post");