পোস্ট মেটা ক্ষেত্রগুলির জন্য সূচকটি [0] কী?


10

পরীক্ষার মাধ্যমে আমার পিএইচপি জ্ঞান উন্নত করার চেষ্টা করে দেখুন! নিম্নলিখিত ওয়ার্ডপ্রেস পিএইচপি কোডে আমি [0] যুক্তিগুলিতে বিভ্রান্ত

global $post;
$custom = get_post_custom($post->ID);
$price = $custom['price'][0];
$coMake = $custom['coMake'][0];

echo $custom['price'][0];

তারা কি পৃষ্ঠায় ইনপুটগুলি ইনডেক্সিং / রেফারেন্সিংয়ের জন্য? যদি তাই হয় তবে তারা একই কেন ?! আপনি কি দয়া করে আমাকে জানান যে কেন এবং কখন সেগুলি ব্যবহার করতে পারি?

উত্তর:


17

প্রতিটি পোস্ট মেটা কী একাধিক মান থাকতে পারে। সুতরাং আপনি একটি অ্যারে হিসাবে ডিফল্টভাবে মান পেতে; প্রথম এন্ট্রি ( 0) সবচেয়ে পুরনো।

get_post_custom()সমস্ত মানগুলি তাদের মান সহ নিয়ে আসে। আপনি আপনার কোডটি এর সাথে সহজ করতে পারেন:

$price  = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );

যখন সর্বশেষ প্যারামিটারটি get_post_meta()হয় TRUE, তখন ওয়ার্ডপ্রেস একটি একক মান প্রদান করবে: প্রদত্ত কীটির জন্য পোস্ট মেটা মানের প্রথম প্রবেশ entry

প্রথম কলটি সেই পোস্ট আইডির জন্য সমস্ত মেটা মান ব্যাকগ্রাউন্ডে get_post_meta()আনবে এবং ক্যাশে করবে , সুতরাং পরে কলগুলি অতিরিক্ত ডাটাবেস কোয়েরিতে আসে না।

একটি উদাহরণ

ধরা যাক, আমরা একটি পোস্ট মেটা কী তৈরি করেছি colorএবং এটি একটি পোস্টের জন্য তিনটি পৃথক মান দিয়ে পূরণ করি । তারপরে আমরা কী দিয়ে একই কাজ করি age

add_action( 'wp_loaded', function() {

    foreach ( array ( 'blue', 'red', 'yellow' ) as $color )
        add_post_meta( 561, 'color', $color, FALSE );

    foreach ( array ( '14', '40', '104' ) as $age )
        add_post_meta( 561, 'age', $age, FALSE );
});

শেষ প্যারামিটারটি FALSEওয়ার্ডপ্রেসকে বলেছে যে এই মেটা কীটি অনন্য করে তুলবে না - পরিবর্তে একটি কী এর জন্য একাধিক মানকে অনুমতি দেবে।

আমাদের postmetaটেবিলের ফলাফল কাঠামো এর মতো দেখাবে:

টেবিল

প্রতিটি সারিতে একটি স্বতন্ত্র বৈশিষ্ট্য রয়েছে meta_idতবে প্রত্যেকটির post_idএকাধিক meta_keyগুলি meta_keyথাকতে পারে এবং প্রত্যেকের একাধিক meta_valueগুলি থাকতে পারে।

এখন আসুন 561 পোস্টের জন্য সমস্ত কাস্টম মান আনুন:

add_action( 'shutdown', function(){

    $custom = get_post_custom( 561 );
    print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});

ফলাফল:

array (
  '_edit_last' => 
  array (
    0 => '1',
  ),
  '_edit_lock' => 
  array (
    0 => '1367617428:1',
  ),
  'color' => 
  array (
    0 => 'blue',
    1 => 'red',
    2 => 'yellow',
  ),
  'age' => 
  array (
    0 => '14',
    1 => '40',
    2 => '104',
  ),
)

_edit_lastএবং _edit_lockওয়ার্ডপ্রেস ইন্টার্নাল হয়, আমরা মুহূর্তের জন্য এটি উপেক্ষা। কেবলমাত্র নোট করুন, আমরা এই মানগুলি একটি অ্যারেও পাই, যদিও একটি মাত্র মান রয়েছে।
colorএবং ageসমস্ত পোস্ট মেটা মানগুলির মতো অ্যারে হয়।
$custom['color'][0]হয় blue

এখন আমরা এর সাথে কেবল রঙটি এনেছি get_post_meta():

add_action( 'shutdown', function(){

    $color = get_post_meta( 561, 'color' );
    print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});

ফলাফল:

array (
  0 => 'blue',
  1 => 'red',
  2 => 'yellow',
)

আমরা আমাদের মেটা মানগুলির এক টুকরো এখানে পাই। $color[0]এখনও blue। পর্দার আড়ালে, ওয়ার্ডপ্রেস ইতিমধ্যে সমস্ত কাস্টম মান নিয়েছে, তাই এর জন্য পরবর্তী হিট ageক্যাশে থেকে পরিবেশন করা হবে।
পারফরম্যান্সের ক্ষেত্রে get_post_custom()এবং get_post_meta()সমান।

শেষ চেষ্টা: get_post_meta()একক মান হিসাবে রঙ পান Get

add_action( 'shutdown', function(){

    $color = get_post_meta( 561, 'color', TRUE );
    print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});

ফলাফল: blue

ওয়ার্ডপ্রেস আপনার কোডে যা করেছে তা করেছে: এটি অ্যারে কী নিয়েছে 0এবং স্ট্রিং হিসাবে মানটি ফিরিয়ে দিয়েছে।

এটি সর্বাধিক পঠনযোগ্য বিকল্প, এটি সহজেই কোড লিখতে ব্যবহার করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.