2 টি অর্গ দিয়ে ফিল্টার যুক্ত করবেন কীভাবে?


9

আমি নিম্নলিখিত ফিল্টারে $ পাথটি সংশোধন করতে চাই। এটিতে 1 টি ইনপুট এবং 2 টি আরগ রয়েছে।

function documents_template( $template = '' ) {

       $path = DOCUMENTS_INCLUDES_DIR . '/document/' . $template;

  return apply_filters( 'document_template', $path, $template );
}

ফিল্টার যুক্ত করার জন্য এটি আমার ফাংশন, এটি ত্রুটির বার্তা পেয়ে যায়, কীভাবে এটি সঠিকভাবে পাওয়া যায়?

function my_template( $template = '' ){

      $path = MY_INCLUDES_DIR . '/document/'. $template;

     return $path;
}
add_filter( 'document_template','my_template', 10, 2 );

আমি নিম্নলিখিত হিসাবে আমার ফেরতের মান পরিবর্তন করার চেষ্টা করেছি, এটিও কার্যকর হয় না:

return apply_filters( 'my_template', $path, $template);

নীচের উত্তরগুলির সাথে, আমার নতুন ফিল্টারটি এখনও কাজ করছে না, সুতরাং, সম্ভবত আমার ফিল্টারটি কোনও শ্রেণিতে রয়েছে? সম্পূর্ণ নতুন কোড এখানে:

Class My_Class{
  function __construct() {
     add_filter( 'document_template', array( $this, 'my_template',10, 2 ) );
  }
 function my_template( $path, $template ){

      $path = MY_INCLUDES_DIR . '/document/'. $template;

     return $path;
 }
}

উত্তর:


10
function my_locate_template( $path, $template ){

      $path = MY_INCLUDES_DIR . '/document/'. $template;

     return $path;
}
add_filter( 'documents_template','my_locate_template', 10, 2 );

add_filter 4 টি ভেরিয়েবল গ্রহণ করে। প্রথম এবং দ্বিতীয় প্রয়োজন হয়। 1. ফিল্টার নাম, 2. ফাংশন নাম। তৃতীয়টি হল অগ্রাধিকার (কখন ফাংশনটি বরখাস্ত হয়)। এবং চতুর্থটি প্যারামিটারের পরিমাণ। আপনি যদি আর্গুমেন্টের পরিমাণ নির্ধারণ করেন তবে আপনাকে সেগুলি আপনার ফাংশনে রাখতে হবে। উদাহরণ স্বরূপ,

add_filter( 'the_filter','your_function', 10, 1 );
function your_function($var1) {
   // Do something
}

যদি ফিল্টার আরও যুক্তি সমর্থন করে (এই ক্ষেত্রে 3)

   add_filter( 'the_filter','your_function', 10, 3 );
    function your_function($var1, $var2, $var3) {
       // Do somthing
    }

Add_filter () সম্পর্কিত তথ্যের জন্য সমস্ত কোডেক্স পড়ুন


function documents_template( $template = '' ) {

       $path = DOCUMENTS_INCLUDES_DIR . '/document/' . $template;

  return apply_filters( 'document_template', $path, $template );
}

function my_template( $path, $template ){

      $path = MY_INCLUDES_DIR . '/document/'. $template;

     return $path;
}
add_filter( 'document_template','my_template', 10, 2 );

এই কোডটি আমার পক্ষে কাজ করে। আপনি কি এই চেষ্টা করেছেন?


আপনার শ্রেণিবিন্যাসে:

add_filter( 'document_template', array( $this, 'my_template',10, 2 ) );

প্রতি:

add_filter( 'document_template', array( $this, 'my_template'), 10, 2  );

my_template ফাংশনে আরও ইনপুট যুক্ত করুন কোনওভাবেই কাজ করে না।
জেনি

আপনি যদি কোনো ত্রুটি পেতে পারি?
রব ভার্মির

হ্যাঁ, সমস্ত ত্রুটি একই: কল_উজার_ফানক_আরে প্যারামিটার 1টি একটি বৈধ কলব্যাক হিসাবে প্রত্যাশা করেছে, অ্যারেতে অবশ্যই দু'জন সদস্য থাকতে হবে
জেনি

আমি আমার উত্তর সম্পাদনা করেছি। আপনি যদি আপনার কোডটি সরিয়ে দেন ত্রুটিটি চলে গেছে, তাই না?
রব ভার্মীর

হ্যাঁ, আমি আমার কোডটি এর সাথে প্রতিস্থাপন করছি, এখনও কাজ করছে না।
জেনি

2

এগুলি মেলে নেওয়া দরকার তবে এটি করবেন না:

apply_filters( 'document_template', $path, $template );

এবং

add_filter( 'documents_template','my_template', 10, 2 );

document_template ! = documents_template

অন্যথায়, সবকিছু সঠিক দেখাচ্ছে।

সম্পাদন করা

অপেক্ষা করুন, সবকিছু সঠিক দেখাচ্ছে না। আমি মনে করি না আপনি নিজের কলব্যাক ফাংশন সংজ্ঞায় একটি পরামিতি যুক্ত করতে চান। পরিবর্তে, আপনি $templateকলব্যাকের মধ্যে সংজ্ঞা দিতে হবে , বা কেবল এটি অশোধিত অবস্থায় পাস করতে হবে। সুতরাং, এটি প্রতিস্থাপন করুন:

function my_template( $template = '' ){

...এর সাথে:

function my_template(){

উদাহরণ:

function my_template(){

      $path = MY_INCLUDES_DIR . '/document/'. $template;

     return $path;
}
add_filter( 'documents_template','my_template', 10, 2 );

সম্পাদনা 2

ঠিক আছে, আমার পক্ষ থেকে ছোটখাটো ভুল। আপনার কলব্যাক হিসাবে এটি চেষ্টা করুন:

function my_template( $path, $template ){

      $path = MY_INCLUDES_DIR . '/document/'. $template;

     return $path;
}
add_filter( 'documents_template','my_template', 10, 2 );

'ডকুমেন্ট' = 'নথি' এর ভুলের জন্য দুঃখিত। এখন আপনার নতুন ফাংশন সহ, এটি এখনও কাজ করছে না। ত্রুটি বলছে কল_উজার_ফানস_আররে প্যারামিটার 1টি একটি বৈধ কলব্যাক হিসাবে প্রত্যাশা করেছে, অ্যারেতে অবশ্যই দু'জন সদস্য থাকতে হবে
জেনি

আমার ভুল; আপনি কি কলব্যাক ফাংশন সংজ্ঞা পরামিতি যোগ করতে হবে। আপডেট উত্তর দেখুন।
চিপ বেনেট

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