2015-09-30 10 views
8

私はPHPでhtml入力に必要な値を出力しています。しかし何らかの理由でminstepの属性を認識していません。 html属性はどのようにオーバーライドできますか?html入力の属性を無効にすることはできますか?

EDIT - 私はWordpressのAnspressをカスタマイズしています。 Here is a link to look through the files for the plugin

構造出力 HTML(ap_ask_form()は、以下のPHPコードである)

<div id="ap-form-main" class="active ap-tab-item"> 
    <?php ap_ask_form(); ?> 
</div> 

class AnsPress_Ask_Form 
{ 
    public function __construct() 
    { 
     add_filter('ap_ask_form_fields', array($this, 'ask_form_name_field')); 
    } 

    public function ask_form_name_field($args){ 
     if(!is_user_logged_in() && ap_opt('allow_anonymous')) 
      $args['fields'][] = array(
       'name' => 'name', 
       'label' => __('Name', 'ap'), 
       'type' => 'text', 
       'placeholder' => __('Enter your name to display', 'ap'), 
       'value' => sanitize_text_field(@$_POST['name']), 
       'order' => 12 
      ); 

     return $args; 
    } 
} 

new AnsPress_Ask_Form; 

/** 
* Generate ask form 
* @param boolean $editing 
* @return void 
*/ 
function ap_ask_form($editing = false){ 
    global $editing_post; 

    $is_private = false; 
    if($editing){ 
     $is_private = $editing_post->post_status == 'private_post' ? true : false; 
    } 

    $args = array(
     'name'    => 'ask_form', 
     'is_ajaxified'  => true, 
     'submit_button'  => ($editing ? __('Update question', 'ap') : __('Post question', 'ap')), 
     'fields'   => array(
      array(
       'name' => 'title', 
       'label' => __('Title', 'ap'), 
       'type' => 'text', 
       'placeholder' => __('Question in one sentence', 'ap'), 
       'desc' => __('Write a meaningful title for the question.', 'ap'), 
       'value' => ($editing ? $editing_post->post_title : sanitize_text_field(@$_POST['title'])), 
       'order' => 5, 
       'attr' => 'data-action="suggest_similar_questions"', 
       'autocomplete' => false, 
      ), 
      array(
       'name' => 'title', 
       'type' => 'custom', 
       'order' => 5, 
       'html' => '<div id="similar_suggestions"></div>' 
      ), 
      array(
       'name' => 'description', 
       'label' => __('Description', 'ap'), 
       'type' => 'editor', 
       'desc' => __('Write description for the question.', 'ap'), 
       'value' => ($editing ? apply_filters('the_content', $editing_post->post_content) : @$_POST['description'] ), 
       'settings' => apply_filters('ap_ask_form_editor_settings', array(
        'textarea_rows'  => 8, 
        'tinymce'   => ap_opt('question_text_editor') ? false : true, 
        'quicktags'   => ap_opt('question_text_editor') ? true : false , 
        'media_buttons'  =>false, 
       )), 
      ), 
      array(
       'name' => 'ap_upload', 
       'type' => 'custom', 
       'html' => ap_post_upload_form(), 
       'order' => 10 
      ), 
      array(
       'name' => 'parent_id', 
       'type' => 'hidden', 
       'value' => ($editing ? $editing_post->post_parent : get_query_var('parent') ), 
       'order' => 20 
      ) 
     ), 
    ); 

    if(ap_opt('allow_private_posts')) 
     $args['fields'][] = array(
      'name' => 'is_private', 
      'type' => 'checkbox', 
      'desc' => __('Only visible to admin and moderator.', 'ap'), 
      'value' => $is_private, 
      'order' => 12, 
      'show_desc_tip' => false 
     ); 

    if(ap_opt('recaptcha_site_key') == '') 
     $reCaptcha_html = '<div class="ap-notice red">'.__('reCaptach keys missing, please add keys', 'ap').'</div>'; 
    else 
     $reCaptcha_html = '<div class="g-recaptcha" id="recaptcha" data-sitekey="'.ap_opt('recaptcha_site_key').'"></div><script type="text/javascript" 
src="https://www.google.com/recaptcha/api.js?hl='.get_locale().'&onload=onloadCallback&render=explicit" async defer></script><script type="text/javascript">var onloadCallback = function() { 
     widgetId1 = grecaptcha.render("recaptcha", { 
      "sitekey" : "'.ap_opt('recaptcha_site_key').'" 
     }); 
     };</script>'; 

    if(ap_opt('enable_recaptcha')) 
     $args['fields'][] = array(
      'name' => 'captcha', 
      'type' => 'custom', 
      'order' => 100, 
      'html' => $reCaptcha_html 
     ); 

    /** 
    * FILTER: ap_ask_form_fields 
    * Filter for modifying $args 
    * @var array 
    * @since 2.0 
    */ 
    $args = apply_filters('ap_ask_form_fields', $args, $editing); 

    if($editing){ 
     $args['fields'][] = array(
      'name' => 'edit_post_id', 
      'type' => 'hidden', 
      'value' => $editing_post->ID, 
      'order' => 20 
     ); 
    } 

    $form = new AnsPress_Form($args); 

    echo $form->get_form(); 
    echo ap_post_upload_hidden_form(); 
} 

/** 
* Generate edit question form, this is a wrapper of ap_ask_form() 
* @return void 
* @since 2.0.1 
*/ 
function ap_edit_question_form() 
{ 
    ap_ask_form(true); 
} 

ask_form.php Wordpressのフックを使用して、このプラグインへの私の拡張」 plugins_loaded "(下記のask_form_amount_field($args, $editing)は私が作ったクラスの一部です;私は、ちょうど

public function ask_form_amount_field($args, $editing){ 
     if(wp_count_terms('question_amount_field') == 0) 
      return $args; //Taxonomy stuff? 

     global $editing_post; 

     if($editing){ 
      $amount_field = get_the_terms($editing_post->ID, 'question_amount_field'); 
      $amount_field = $amount_field[0]->term_id; 
     } //More things purely related to taxonomy, it seems. 

     $args['fields'][] = array(
      'name' => 'amount_field', 
      'label' => __('Amount field label', 'amount_field_for_anspress'), 
      'type' => 'number', 
      'value' => ($editing ? $amount_field : sanitize_text_field(@$_POST['amount_field'])), 
      'taxonomy' => 'question_amount_field', 
      'orderby' => ap_opt('form_amount_field_orderby'), 
      'desc' => __('Enter the amount you wish to tip someone for fulfilling your request.', 'amount_for_anspress'), 
      'order' => 7, 
      'min' => 0.50, 
      'step' => 0.25 
     ); 

     return $args; 

    } 

}}//The class ends here; its beginning is not shown above 

function find_do_for_anspress() { 
    $discounts = new Find_Do_For_AnsPress(); 
} 
add_action('plugins_loaded', 'find_do_for_anspress'); 
+2

出力が問題であれば、これは何も出力されません。出力を行う部分を投稿してください。またはこれがあなたが使用しているライブラリ/フレームワークの投稿の一部である場合。 –

+0

@adelphia私はすべてについてカバーしていると思います。私はルーキーであり、この問題はコミュニティによって拒否されると思うので、私は**一般的に** HTML属性をオーバーライドすることを知りたがっていますか?例えば、単純な ''どのようなコードで他の何かをフィルタリングできるのでしょうか? PHPにHTML属性を変更できるものがありますか?もしそうなら、私はいくつかのキーワードのためのこのプラグインのコードのすべての行を検索することができます – DarthVoid

+0

コミュニティは、デューディリジェンスを行いませんし、適切な質問をする人を拒否する、それはちょうどnoobsのために人々を拒否しない..私はあなたがそこに行っているフォームヘルパーをどのようなフォームに精通していないが、javascriptのオプションですか?それは簡単な方法のように聞こえる。 –

答えて

0

OK)...それはあまりにも長いすることなく、関連するすべての情報を表示しようとすることができ、あなたは、JavaScriptのsoultionが働くだろうと述べたので、ここでJS内の属性を上書きする方法を説明します。このメソッドを使用してアイテムにid属性を与える必要があります。あなたの要素にはid="myelement"という属性もあると見なします。

jsFiddleのコードを説明するコメントがあります。

var myelement = document.getElementById('myelement'); 
myelement.removeAttribute("min"); 
myelement.removeAttribute("step"); 
var min = document.createAttribute('min'); 
var step = document.createAttribute('step'); 
min.value = '100'; //put your new values here 
step.value = '100'; //put your new values here 
myelement.setAttributeNode(min); 
myelement.setAttributeNode(step); 
alert(myInput.getAttribute('custom-attr')); 
1

はここでjQueryを使って短いJavaScriptのソリューションです、あなたはので、Wordpressのは、jQueryの

//set values 
minValue = 100; 
stepValue = 100; 

//select element by ID, update min attribute 
$("#my-element-id").attr("min", minValue); 

//select element by ID, update step attribute 
$("#my-element-id").attr("step", minValue); 

を実装する方法のjQueryのに$を変更する必要があることに注意してくださいここでjQueryのattrの上のドキュメントは(だ)詳細については、属性を取得および/または設定するために使用できます。 https://api.jquery.com/attr/

関連する問題