শর্টকোডে বুলিয়ান মান পাস করুন


16

ওয়ার্ডপ্রেস শর্টকোডগুলিতে, আমি কীভাবে বুলিয়ান বৈশিষ্ট্যগুলি পাস করতে পারি?
উভয়ই [shortcode boolean_attribute="true"]বা [shortcode boolean_attribute=true]স্ট্রিংয়ের মান দিচ্ছে।

সম্পাদনা

ব্যবহারকারীরা যদি জানেন যে তারা কি করছেন তবে তাদের জন্য কোনও সমস্যা হবেনা যদি আমি @ ট্রাভেলস দ্বারা মন্তব্য করা ট্রিকটি ব্যবহার করি। তবে কিছু ব্যবহারকারীর একটি বৈশিষ্ট্যর falseমান প্রদান করে এবং trueমান গ্রহণ করলে তারা হারিয়ে যাবে । তাহলে কি আর কোন সমাধান আছে?


2
কেবল অ্যাট্রিবিউটটি পাস করবেন না এবং falseঅন্যথায় আপনারও হবে true
brasofilo

ধন্যবাদ @ ব্রাসোফিলো তবে এর অন্য কোনও সমাধান আছে কি? আমি মনে করি কিছু ব্যবহারকারীর যদি তারা "মিথ্যা" মান দেয় তবে তারা "সত্য" মান পাবে lost
সোডব্লেগ গানসুখ

উত্তর:


14

ব্যবহার করা সহজ 0এবং 1মান এবং তারপর ফাংশন ভিতরে টাইপকাস্টিং:

[shortcode boolean_attribute='1'] অথবা [shortcode boolean_attribute='0']

তবে আপনি যদি চান তবে আপনি এটি কঠোরভাবে পরীক্ষা করতে এবং 'false'এটি বুলিয়ানকে অর্পণ করতে পারেন, এইভাবে আপনি এটি ব্যবহার করতে পারেন:

[shortcode boolean_attribute='false'] অথবা [shortcode boolean_attribute='true']

তারপর:

add_shortcode( 'shortcode', 'shortcode_cb' );

function shortcode_cb( $atts ) {
  extract( shortcode_atts( array(
    'boolean_attribute' => 1
  ), $atts ) );
  if ( $boolean_attribute === 'false' ) $boolean_attribute = false; // just to be sure...
  $boolean_attribute = (bool) $boolean_attribute;
}


এটা দুর্দান্ত উত্তর। তবে আমি ভেবেছিলাম ব্যবহারকারীদের সত্য বা মিথ্যা পছন্দ হলে এটি দুর্দান্ত হবে। দুঃখিত আমি আপনার উত্তর গ্রহণ হিসাবে গ্রহণ করতে পারি না।
সোডব্লেগ গানসুখ

@ সোডবিলিগগানসুখ এই কোডটি 'true'এবং'false'
গাজাজাজ্যাপ

@toscho আমি শুধু কপি এবং থেকে আটকানো প্যাড ;)
gmazzap

3
@ সোডবিলিগগানসুখ সমস্ত আর্গুমেন্ট স্ট্রিং হিসাবে পাস হয়েছে, কারণ সেগুলি কেবল স্ট্রিং হিসাবে প্রবেশ করা যায় (টাইপ করা)। এই উত্তর ছাড়া আর কোনও উপায় নেই।
স্ট্রিংলেস

28

@ জিএম উত্তরের সম্প্রসারণ হিসাবে (এটি করার একমাত্র সম্ভাব্য উপায়), এখানে কিছুটা সংক্ষিপ্ত / সজ্জিত এবং প্রসারিত সংস্করণ (যা আমি ব্যক্তিগতভাবে পছন্দ করি):

সংক্ষিপ্ত / বিউটিফায়ার্ড বৈকল্পিক

এতে booleanথাকা মানটির জন্য একটি চেক করা যথেষ্ট । যদি এটি হয় trueতবে ফলাফলটি হবে (bool) true, অন্যথায় এটি মিথ্যা হবে। এটি একটি কেস তৈরি করে true, অন্য সব কিছুর falseফলাফল।

add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
    $args = shortcode_atts( array(
        'boolAttr' => 'true'
    ), $atts, 'shortcodeWPSE' );

    $args['boolAttr'] = 'true' === $args['boolAttr'];
}

প্রসারিত / ব্যবহারকারী-নিরাপদ বৈকল্পিক

যে কারণে আমি এই সংস্করণটিকে পছন্দ করি তা হ'ল এটি ব্যবহারকারীর জন্য on/yes/1একটি নাম হিসাবে টাইপ করতে দেয় true। এটি ব্যবহারকারীর ত্রুটির সম্ভাবনা হ্রাস করে যখন ব্যবহারকারী মনে করে না যে এর আসল মানটি কী true

add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
    $args = shortcode_atts( array(
        'boolAttr' => 'true'
    ), $atts, 'shortcodeWPSE' );

    $args['boolAttr'] = filter_var( $args['boolAttr'], FILTER_VALIDATE_BOOLEAN );
}

অতিরিক্ত নোট:

1) সর্বদা জন্য তৃতীয় যুক্তি পাস shortcode_atts()। অন্য শর্টকোড বৈশিষ্ট্য ফিল্টার লক্ষ্য করা অসম্ভব।

// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );

2) কখনও ব্যবহার করবেন না extract()। এমনকি কোর এই কলগুলি হ্রাস করতে চায়। এটি globalভেরিয়েবলের কাছেও সমানভাবে খারাপ , কারণ আইডিইগুলি নিষ্কাশিত সামগ্রীগুলি সমাধান করার সুযোগ দেয় না এবং ব্যর্থতার বার্তা ফেলে দেয়।


1
বাহ, এটি একটি দুর্দান্ত উত্তর। তোমাকে অনেক ধন্যবাদ. আমি আশা করি আপনার উত্তরের পক্ষে ভোট দেওয়ার মতো যথেষ্ট খ্যাতি আমার ছিল। এবং আপনার পরামর্শের জন্য আপনাকে অনেক ধন্যবাদ।
সোডবাইলেগ গানসুখ

1
আমি আপনার পক্ষে সোডবিলিগকে ভোট দিয়েছি। :)
ডায়রো

wp_validate_boolean()ওয়ার্ডপ্রেস 4.0.০.০ বা তারও বেশি সংস্করণ বুলিয়ান মানগুলি বৈধকরণে সহায়ক। ফাংশন রেফারেন্স ডেভেলপার.ওয়ার্ডপ্রেস.অর্গ
আমির শাহজাদ

@ আমেরশাহজাদ এটি এই (ইমো অযৌক্তিকভাবে যুক্ত) বিকল্প filter_var( $var, FILTER_VALIDATE_BOOLEAN )., যা এই ফাংশনটির ডকব্লক নিজেও বলেছে।
কায়সার

@ কেজার এটি কেবল তথ্যের জন্য।
আমের শাহজাদ

0

গাজাজাপের উত্তরের ভিত্তিতে এখানে একটি সংক্ষিপ্ত সাধারণ সংস্করণ:

'1' বা '0' ব্যবহার করুন, তারপরে একটি ডাবল ব্যাং ব্যবহার করুন "!!" যা এটি "সত্যবাদী / মিথ্যা" মানটিকে বুলিয়ান সমতুল্যে পরিবর্তন করে

নোট করুন এটি "সত্য" এবং "মিথ্যা" স্ট্রিংগুলির সাথে কাজ করবে না, কেবল "1" এবং "0"

[myshortcode myvar="0"]

myshortcodefunction( $args )
{
   $myvar = !! $args['myvar'];
   var_dump($myvar); // prints bool(false)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.