0

ワードプレスのインストールで連絡フォームを作成するために連絡フォーム7を使用しています。作成されたフォームはここにあります

お問い合わせフォームの拡張機能は無料で、柔軟性があり、使いやすいです。ただし、フォームに含まれるフィールドの数に関係なく、常に1つの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に分割します

  • または<div>、<の間に挿入しform action="て、フォームを水平方向にほぼ(完全にではなく)均等に拡張できるようにします div's

私がフォローしたい他のフォームはここにあります

更新:

  • 私はEunoiaテーマを使用していますが、[one_third first]のような短いコードを使用してCSSを適用していますが、ページ構造が機能していません。プラグインが同じ'[tag]'構造を使用しているので意味があります。
  • フォームコードに要素を追加しようとしましたが、ページのソースコードにこれらのタグが表示divされますが、それでも何も起こりません...div

他の質問が頭に浮かびました 私のテーマコードは、[some theme code]それらが機能せず、単にページに出力されるようなものです...私がそれを利用できる提案はありますか?

誰かが私にこれを行う方法を提案できますか?いくつかの大まかなアイデア、いくつかのガイドライン、それで私はそれをコーディングしようと試みることができます...

ありがとう..

4

1 に答える 1

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>';
于 2013-01-07T23:37:43.367 に答える