HEX
Server: nginx/1.16.1
System: Linux VM-0-14-centos 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64
User: www (1000)
PHP: 8.3.31
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.sceybwg.com/wp-content/themes/Modular/extends/wpjam-form/public/form-module.php
<?php
class WPJAM_Form_Module extends WPJAM_Module{
	public function parse_setting($args){
		$setting	= parent::parse_setting($args);
		$fields		= $this->get_fields('setting');

		foreach($fields['display']['fields'] as $sub_key => $sub_field){
			$setting[$sub_key]	= (bool)($setting[$sub_key] ?? false);
		}

		return $setting;
	}

	public function parse_content($args){
		$content	= parent::parse_content($args);
		$form_id	= (int)$content['form_id'];
		$object		= $form_id ? wpjam_get_post_object($form_id) : null;

		return $object ? $object->parse_for_json($args) : null;
	}

	public function render_setting(){
		$rendered	= parent::render_setting();
		$fields		= $this->get_fields('setting');
		$setting	= $this->setting;
		$display	= [];

		foreach($fields['display']['fields'] as $sub_key => $sub_field){
			if(!empty($setting[$sub_key])){
				$display[]	= $sub_field['label'];
			}
		}

		$rendered['display']	= [$fields['display']['title'], $display ?: '无'];

		return $rendered;
	}

	public function render_content(){
		$content	= parent::render_content();
		$form_id	= $content['form_id'];

		return $form_id ? get_the_title($form_id) : '';	
	}

	public static function get_fields($action_key='', $args=[]){
		if($action_key == 'setting'){
			$display	= ['title'=>'标题', 'excerpt'=>'摘要', 'thumbnail'=>'头图'];
			$fields		= wpjam_array($display, fn($k, $v) => ['form_'.$k.'_display', ['type'=>'checkbox', 'label'=>$v]]);

			return ['display'=>['title'=>'显示', 'type'=>'fields', 'sep'=>'&emsp;', 'fields'=>$fields]];
		}elseif($action_key == 'create' || $action_key == 'edit'){
			return ['form_id'=>array_merge(wpjam_get_post_id_field('form'), ['title'=>'表单', 'name'=>'content[form_id]', 'required'])];
		}
	}
}

wpjam_register_module_type('form', [
	'title'			=> '表单',
	'dashicon'		=> 'forms',
	'model'			=> 'WPJAM_Form_Module',
	'order'			=> 20,
	'max_modules'	=> 1
]);