Skip Navigation

[Resolved] 如何自动生成文章标题 以及如何使用cred创建子文章

This support ticket is created 2 years, 6 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Supporter timezone: Asia/Hong_Kong (GMT+08:00)

This topic contains 3 replies, has 2 voices.

Last updated by Luo Yang 2 years, 6 months ago.

Assisted by: Luo Yang.

Author
Posts
#2388373

你好。我遇到一个这样的问题
我创建了两个自定义文章类型
1 房间
2 卫生情况。他们是1对多的关系, 1个房间每天都会检查一次卫生情况, 所以每个房间每天都会有一个最新的卫生状况
我创建了一个content templat 比如01房间, 我用view显示出了01房间的每日卫生状况,我同时创建了一个form。用来发布每日的卫生情况, 我把form嵌入在了房间的content template中,我现在希望 当用户点击到这个房间的页面时,除了显示过往的卫生情况, 还能发布今天多卫生情况, 这对于cred是很容易的事情, 但是我想达成的功能是, 使用cred发布的卫生情况,能直接属于这个房间, 即在01房间的页面下 发布的卫生情况属于01。 02房间页面下发布的卫生情况属于02,我在toolset的文档中看到, 可以在content template中嵌入一个fields and text 然后选择form 中的create child link ,但是这需要跳转到其他页面, 我希望直接使用本页面中的cred来发布child post, 我看到cred中提供了set default vaule form url parameter, 但是我不知道该如何使用, 这是我遇到的第一个问题

第二个问题, cred中的很多内容 我如果设置了 default vault。我能否将有预设值的选单隐藏, 比如一个日期选择, 我将默认用今天的日期作为预设值,然后我将选单隐藏 ,这样用户在使用这个表达发布文章的时候,默认的date就都会是今天,当然这只是一个例子, 因为我知道如果我真需要今天的日期,我可以直接显示一个post的创建日期,

第三个问题, 很多时候 我要的数据 post title是非必需的, 所以我希望用表单创建文章的时候,能自动生成一个文章标题,比如 伊当下的时间作为文章的默认标题, 而不需要用户再次手动输入文章标题

非常感谢

#2388879
defailt-room.jpg

你好,

问题1)你可以直接在“房间”页面显示子“卫生情况”表单,只需要把“房间”默认值设置成当前页面的ID:
[wpv-post-id item="$current_page"]
参考我的截图:defailt-room.jpg
如果你用的是专家模式编辑表单,需要设置shortcode的value属性,如下:
[cred_field ... value='[wpv-post-id item="$current_page"]']

参考文档:
https://toolset.com/documentation/programmer-reference/forms/cred-shortcodes/#cred_field
value. Optional. Preset value
https://toolset.com/documentation/programmer-reference/views/views-shortcodes/item-attribute/
$current_page is used to retrieve data from the current page being rendered.

问题2)是的,你可以使用CSS代码来隐藏表单的选项
参考文档:
hidden link

问题3)你可以使用PHP代码来实现,比如下面的帖子:
https://toolset.com/forums/topic/change-title-from-cred/#post-1213002
参考文档:
https://toolset.com/documentation/programmer-reference/cred-api/#cred_save_data

#2401565

非常感谢, 我的问题基本都解决了 , 但是我在想 用cred发布文章的时候,我能否给title做一个预设值 比如 当下的系统时间 来做为title

#2401627

关于“title做一个预设值”,你可以使用下面的PHP代码:

add_action('cred_save_data', 'build_post_title', 10, 2);
function build_post_title($post_id, $form_data) {
	  
	if ($form_data['id']==9999) { // replace 9999 with your CRED form ID
	 
		//https://developer.wordpress.org/reference/functions/current_time/
		$title = current_time( 'Y-m-d H:i:s' );
		 
		// generating slug 
		$slug = sanitize_title($post_title);
		 
		wp_update_post(array('ID'=>$post_id, 'post_title'=>$post_title,'post_name' => $slug));
	}
}

如何添加PHP代码:
https://toolset.com/documentation/adding-custom-code/using-toolset-to-add-custom-code/