ত্রুটিটি যেমন বলেছে আপনার ব্যবহারের জন্য ক্লাসের একটি উদাহরণ প্রয়োজন $this
। কমপক্ষে তিনটি সম্ভাবনা রয়েছে:
সবকিছু স্থির করুন
class My_Plugin
{
private static $var = 'foo';
static function foo()
{
return self::$var; // never echo or print in a shortcode!
}
}
add_shortcode( 'baztag', array( 'My_Plugin', 'foo' ) );
তবে এটি আর ওওপি নয়, কেবল নেমস্পেসিং।
প্রথমে একটি আসল অবজেক্ট তৈরি করুন
class My_Plugin
{
private $var = 'foo';
public function foo()
{
return $this->var; // never echo or print in a shortcode!
}
}
$My_Plugin = new My_Plugin;
add_shortcode( 'baztag', array( $My_Plugin, 'foo' ) );
এইটা কাজ করে. যদি কেউ শর্টকোডটি প্রতিস্থাপন করতে চায় তবে আপনি কিছু অস্পষ্ট সমস্যার মধ্যে পড়ে ।
ক্লাসের উদাহরণ দেওয়ার জন্য একটি পদ্ধতি যুক্ত করুন:
final class My_Plugin
{
private $var = 'foo';
public function __construct()
{
add_filter( 'get_my_plugin_instance', [ $this, 'get_instance' ] );
}
public function get_instance()
{
return $this; // return the object
}
public function foo()
{
return $this->var; // never echo or print in a shortcode!
}
}
add_shortcode( 'baztag', [ new My_Plugin, 'foo' ] );
এখন, যখন কেউ অবজেক্টের উদাহরণ পেতে চায়, তখন তাকে কেবল লিখতে হবে:
$shortcode_handler = apply_filters( 'get_my_plugin_instance', NULL );
if ( is_a( $shortcode_handler, 'My_Plugin ' ) )
{
// do something with that instance.
}
পুরাতন সমাধান: আপনার ক্লাসে অবজেক্টটি তৈরি করুন create
class My_Plugin
{
private $var = 'foo';
protected static $instance = NULL;
public static function get_instance()
{
// create an object
NULL === self::$instance and self::$instance = new self;
return self::$instance; // return the object
}
public function foo()
{
return $this->var; // never echo or print in a shortcode!
}
}
add_shortcode( 'baztag', array( My_Plugin::get_instance(), 'foo' ) );
static
।