我正在使用Contact Forms 7在wordpress安装中创建联系表单。创建的表单位于here
联系表单扩展是免费的,灵活的,易于使用..但问题是,无论表单包含多少个字段,它总是只创建一个div,因此页面长度变长(请参阅我的表单创建)
我挖掘代码并以contact-form-7\includes\classes.php
结束。负责生成表单html的代码是
/ *生成表单HTML * /
function form_html() {
global $wpcf7;
$form = '<div class="wpcf7" id="' . $this->unit_tag . '">';
$url = wpcf7_get_request_uri();
if ( $frag = strstr( $url, '#' ) )
$url = substr( $url, 0, -strlen( $frag ) );
$url .= '#' . $this->unit_tag;
$url = apply_filters( 'wpcf7_form_action_url', $url );
$class = 'wpcf7-form';
if ( $this->is_posted() ) {
if ( empty( $wpcf7->result['valid'] ) )
$class .= ' invalid';
elseif ( ! empty( $wpcf7->result['spam'] ) )
$class .= ' spam';
elseif ( ! empty( $wpcf7->result['mail_sent'] ) )
$class .= ' sent';
else
$class .= ' failed';
}
$class = apply_filters( 'wpcf7_form_class_attr', $class );
$enctype = apply_filters( 'wpcf7_form_enctype', '' );
$form .= '<form action="' . esc_url_raw( $url ) . '" method="post"'
. ' class="' . esc_attr( $class ) . '"' . $enctype . '>' . "\n";
$form .= $this->form_hidden_fields();
$form .= $this->form_elements();
if ( ! $this->responses_count )
$form .= $this->form_response_output();
$form .= '</form>';
$form .= '</div>';
return $form;
}
我正在寻找某种方式以便我能够
将<div class="wpcf7"
划分为3个包含大致相同的div
没有字段
或在某个地方{&lt; <div>
之间插入form action="
以便我
可以大致(不完全)相等地水平扩展我的形式
div's
我的其他表单,我想要关注的格式位于here
upadate:
div
元素,但仍然没有
虽然在页面的源代码中,会出现这些div
标记...... 另一个问题出现在脑海中
我的主题代码就像[some theme code]
他们不工作,只是在页面上输出...任何建议我都可以利用它?
有人可以建议我这样做吗?一些粗略的想法,一些指导,以便我可以尝试编码...
感谢..
答案 0 :(得分:1)
如果你可以把你的字段变成一个零索引数组,这就可以了(phpFiddle):
$fields=array('F1','F2','F3','F4','F5','F6','F7','F8');
$fieldCount=count($fields);
$column=0;
$columnCount=3;
//All columns have this many fields
$perColumn=floor($fieldCount/$columnCount);
//This many fields left over (to be distributed over the first columns)
$extras=$fieldCount - $perColumn*$columnCount;
$i=0; //All fields iterator
$j=0; //Column fields iterator
$columnFieldCount=$perColumn;
if($extras>$column)$columnFieldCount++;
echo '
<style>.column{float:left; width:25%;}</style>
<div class="column">';
for($i=0; $i<$fieldCount;$i++)
{
echo '
<p>'.$fields[$i].'</p>';
$j++;
if($j>=$columnFieldCount)
{
$j=0;
$column++;
$columnFieldCount=$perColumn;
if($extras>$column)$columnFieldCount++;
echo '
</div><div class="column">';
}
}
echo '
</div>';