这是我的第一个wordpress网站。我正在创建一个本地社区网站,我希望具有与freecycle类似的功能,即用户可以免费向其他人提供内容。所以他们需要成为一个下拉框来说明这件事是想要的还是提供的。项目名称的标题字段。然后该项目的详细信息。上传项目的图像和位置字段,人们必须从中获取。也可能是联系号码字段。理想情况下,我想要一个复选框系统,以便如果该项目被提供给某人,用户可以勾选一个提示的框,然后该帖子可能会被分配一个等待收集的类别,其文本变为灰色并消失的帖子列表。当它被收集时,他们可以点击另一个框,然后给它一个归档类别。我甚至不知道这是否有可能......
如果是这样,那么最好的方法是什么?考虑到我希望能够在网站的其他区域使用这些帖子,例如在侧边栏中显示最近提供的项目。我还希望能够添加窗体的最小化版本,该版本将位于某些页面的侧边栏中,因此用户可以在不同的页面上添加项目。
答案 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");