এখানে কয়েকটি কর্মক্ষেত্র রয়েছে:
পন্থা # 1
ক্লাসের পদ্ধতিগুলির মধ্যে যেমন একটি ব্যক্তিগত ভেরিয়েবল হিসাবে কোনও প্রদত্ত মানকে পাশ posts_where
কাটাতে সক্ষম হতে আপনি ক্লাসে শর্টকোডের সংজ্ঞা এবং ফিল্টারটির কলব্যাক মোড়ানো করতে পারেন ।
পদ্ধতির # 2
আর একটি পদ্ধতি WP_Query
হ'ল আপনার শর্টকোডের কলব্যাকের মধ্যে একটি ইনপুট হিসাবে মানটি পাঠানো হবে :
$query = new WP_Query ( [ 'wpse_value' => 5, ... ] );
এবং তারপরে আপনার পোস্টের ভিতরে_ যেখানেই ফিল্টার আপনি এটি অ্যাক্সেস করতে পারবেন:
add_filter( 'posts_where', function( $where, \WP_Query $query )
{
if( $value = $query->get( 'wpse_value' ) )
{
// can use $value here
}
return $where;
}, 10, 2 );
পদ্ধতির # 3
... অথবা আপনি ভেরিয়েবলের বেনামে ফাংশন নির্ধারণের পরে কলব্যাকটি মুছে ফেলতে সক্ষম করতে @ থে_ড্রেম্যাটিস্ট দ্বারা উদাহরণটিও সামঞ্জস্য করতে পারেন:
function my_shortcode_function( $atts, $content )
{
// shortcode_atts stuff here
$value = 5; // just an example
// Add a filter's callback
add_filter( 'posts_where', $callback = function( $where ) use ( $value ) {
// $value accessible here
return $where;
} );
// WP_Query stuff here and setup $out
// Remove the filter's callback
remove_filter( 'posts_where', $callback );
return $out;
}
add_shortcode( 'my-shortcode', 'my_shortcode_function' );
উদাহরণস্বরূপ, পিএইচপি ডক্স কীভাবে একটি ভেরিয়েবলের ব্যবহার কীওয়ার্ড সহ একটি বেনাম ফাংশন নির্ধারণ করতে হবে তা পরীক্ষা করুন ।
PS: আমি মনে করি বেনামে ফিল্টারটির কলব্যাক অপসারণ করা আরও সহজ করার জন্য, আমি প্রথমে @gmazap দ্বারা এই পরিবর্তনশীল নির্ধারণের কৌশল সম্পর্কে শিখেছি।
আশা করি এটা সাহায্য করবে!
$GLOBALS['value'] = some value
এবং তারপরে$GLOBALS['value']
এটি কাজ করে তবেই যদি আমি মানটিকে সরাসরি হিসাবে সেট করি$value = some value
এবং তারপরে এটি ব্যবহার$GLOBALS['value']
করে কল করি তবে এটি পিএইচপি ম্যানুয়াল অনুসারে কাজ করা উচিত।