php
  • wordpress-theming
  • 2017-08-24 7 views 1 likes 
    1

    で入力を入力します。は私が持っている私のjqueryのコードでは、配列

    $("#show").append("<img src=" +attachment.url+" alt="+attachment.alt+" title="+attachment.title+" description="+attachment.caption+" class='img-responsive img-thumbnail'/><input type='hidden' name='my_image_URL[]' value="+attachment.url+"></span>"); 
    

    私のjqueryのコードは、ニュース、選択した画像のフィールドを追加し、入力名my_image_URL[]を埋めます。 PHPで

    if (isset($_POST['my_image_URL'])) {  
         $urls = $_POST['my_image_URL']; 
         echo '<input type="hidden" name="imagens_home" value="'.$urls.'"/>'; 
         } 
    

    私は隠された入力に$urls配列を追加しようとしています。

    そして後に、もしOKその作品:

      <?php 
           if ($urls != '') { 
    
           foreach ($urls as $url) { 
          ?>       
            <img src="<?php echo $url;?>" class="img-responsive img-thumbnail " /> 
            <input name="my_image_URL[]" value="<?php echo $url;?>"/> 
           </div>    
          <?php 
           }; 
           } 
          ?> 
    

    しかし、このコードの一部は、入力を埋めない:

    if (isset($_POST['my_image_URL'])) {  
         $urls = $_POST['my_image_URL']; 
         echo '<input type="hidden" name="imagens_home" value="'.$urls.'"/>'; 
         } 
    

    ---------- UPDATE - ------

    options.php

    register_setting(
          'tema-setting-group',//string $option_group 
          'imagens_home' //string $option_name 
          //calback $sanitize_calback  
         ); 
    
    --- 
        add_settings_field(
         'home-imagens-top',//string $id 
         'Imagens',//String $title 
         'tema_home_imgs',//string $calback 
         'opcoes_do_tema',//string $page  
         'tema-home-options'//string $section 
         //string $args   
         ); 
    
    
    //calback 
    function tema_home_imgs(){ 
         $urlsImagens = esc_attr(get_option('imagens_home')); // RETURN DB DATA 
    
         include(get_template_directory() . '/inc/templates/selecao_imagens.php'); 
    
         if (isset($_POST['my_image_URL'])) { 
    
         $urls = $_POST['my_image_URL']; 
          echo '<input name="imagens_home" value="'.$json_encode($urls).'" style="width:300px"/>'; 
    
    
         } 
        } 
    

    selecao_imagens.php

    <?php settings_errors();?> 
    
    <form method="post" action="options.php"> 
        <?php settings_fields ('tema-setting-group'); ?> 
    
        <?php do_settings_sections (
        'opcoes_do_tema'//string $page 
    
        ); ?> 
    
    
    
        <?php submit_button(); 
    
        ?> 
    
    </form> 
    

    -------- UPDATE 2 -------

    私が試みtheme_options.php

    <input id="my_upl_button" type="button" value="Escolher Imagens" /><br/> 
    
        <div class="row"> 
          <div id="exibe" class="sortable">  
    
          <?php   
          $urls = json_decode($urlsImagens, true); 
           if ($urls != '') { 
           foreach ($urls as $url) { 
          ?>   
            <img src="<?php echo $url;?>" class="img-responsive img-thumbnail " /> 
            <input name="my_image_URL[]" value="<?php echo $url;?>"/> 
    
          <?php 
           }; 
           } 
          ?> 
        </div> 
        </div> 
    

    echo '<input name="imagens_home" value="' . htmlspecialchars(json_encode($urls)) . '" />'; 
    

    入力にまだ入力されていません。

    私ものみ試してみました:

    If (isset ($ _POST ['my_image_URL'])) { 
    Print_r ($ _ POST ['my_image_URL']); 
    
    } 
    

    をしかし、私はいくつかを置く場合は提出した後は、正しく私は配列を保存しようとしています何を除き、他のすべての入力を保存し、フォームに、画面に何も表示されません。手動の情報は大丈夫です。しかし、なぜ私は各画像入力の名前がmy_image_URL []ではないのか分かりません。フォームのアクションは、このようなものです:私は隠された入力で$ URLの配列を追加しようとして設定APIに

    おかげ

    +0

    echo ''; それは隠しタイプなので、うまくいきませんか? –

    +0

    実際には動作しません。一時的に隠しファイルを削除しました。 – Gislef

    +1

    '$ urls'はPHP配列です。そのような文字列に連結することはできません。 html値に対応するフォーマットの文字列に変換する必要があります。配列の属性 – Kaddath

    答えて

    1

    を使用してい

    <Form method = “post” action = “options.php”> 
    

    私が理解している場合は、隠し入力に配列値を格納しようとしているため、後で取り出すことができます。あなたがPHPの配列をエコーするときあなたが得るすべてが文字列Arrayなく、実際の配列の内容であるため、問題は... ...これが動作しない、

    echo '<input type="hidden" name="imagens_home" value="'.$urls.'"/>'; 
    

    です。

    あなたはしかし、JSON文字列に配列を回すことができる:

    echo '<input type="hidden" name="imagens_home" value="'.$json_encode($urls).'"/>'; 
    

    は今、あなたの隠された入力は、通常の文字列を持っています。後でフォームがPOSTされると、それを取得することができます。

    $urls = json_decode($_POST['imagens_home'], true) 
    
    +0

    ありがとうございます。入力は空のままです。 Alive to Dieユーザーソリューションも空を返します – Gislef

    +0

    @ギズレフ非常に具体的にしてください。どの入力が空のままであるか?いつ?どのようにチェックするのですか? – BeetleJuice

    +0

    私の質問でコードを更新しました。 – Gislef

    関連する問題