আমি একটি প্লাগইন থেকে কাস্টম পৃষ্ঠার টেম্পলেট তৈরি করার জন্য গত কয়েক ঘন্টা ধরে ঘুরে দেখছিলাম তবে এখনও ভাগ্য হয়নি।
আমি বিশেষভাবে যা করার চেষ্টা করছি তা হল কোনও পৃষ্ঠা সম্পাদনা করার সময় উপলভ্য পৃষ্ঠাগুলিগুলির তালিকার একটি বিকল্প যুক্ত করা, এবং অন্য কোনও পদ্ধতি ব্যবহার না করা যেমনif( is_page( 'page-slug' ) ) { /* etc */ }
এটি করার জন্য আমি কি কোনও বৈশ্বিক পরিবর্তনশীল পরিবর্তন করতে পারি?
সম্পাদনা:
আমি বর্তমানে এই কোডটি ব্যবহার করছি, @ m0r7if3r লিঙ্কের ভিত্তিতে আমাকে একটি মন্তব্যে জানিয়েছে, সমস্যাটি হচ্ছে পৃষ্ঠাটি দেখার সময় এই ফাংশনটি চালানো হবে তবে পৃষ্ঠা সম্পাদনার সময় নয় (পৃষ্ঠা টেমপ্লেটগুলির সাথে ড্রপডাউন তালিকাটি তৈরি করতে) :
class JW_SiteGrader {
private static $instance;
private function __construct() {
add_action( 'template_redirect', array( &$this, 'sitegrader_template_redirect' ), 20 );
}
public static function getInstance() {
// Return the class data in a Singleton fashion
if (self::$instance == null)
self::$instance = new JW_SiteGrader();
return self::$instance;
}
public function sitegrader_template_redirect() {
add_filter( 'page_template', array( &$this, 'sitegrader_page_template' ), 10, 1 );
}
public function locate_plugin_template( $template_names, $load = false, $require_once = true ) {
if ( !is_array( $template_names ) )
return '';
$located = '';
$this_plugin_dir = WP_PLUGIN_DIR . '/' . str_replace( basename( __FILE__ ), '', plugin_basename( __FILE__ ) );
foreach ( $template_names as $template_name ) {
if ( !$template_name )
continue;
if ( file_exists( STYLESHEETPATH . '/' . $template_name ) ) {
$located = STYLESHEETPATH . '/' . $template_name;
break;
} else if ( file_exists( TEMPLATEPATH . '/' . $template_name ) ) {
$located = TEMPLATEPATH . '/' . $template_name;
break;
} else if ( file_exists( $this_plugin_dir . $template_name ) ) {
$located = $this_plugin_dir . $template_name;
break;
}
}
if ( $load && '' != $located )
load_template( $located, $require_once );
return $located;
}
public function sitegrader_page_template( $template ) {
$object = get_queried_object();
if ( 'page' == $object->post_type ) {
// New
$templates[] = "page-sitegrader.php";
// Like in core
$templates[] = "page-{$object->post_type}.php";
$templates[] = "page.php";
return locate_template( $templates );
}
// return apply_filters('page_template', $template);
return $template;
}
}
সম্পাদনা 2:
দেখে মনে হচ্ছে যে এই কার্যকারিতাটি ভবিষ্যতের আপডেটে প্রকাশিত হবে, আমি এটি সম্পর্কে বেশ কয়েকটি ট্র্যাকের টিকিট পড়েছি এবং কিছুটা আলোচনা হয়েছে তবে আসল উত্তর নেই (আশা করি 3.4)) ট্র্যাকের টিকিটের ইউআরএল কিছুটা এখানে তালিকাবদ্ধ করবে।
সম্পাদনা 3:
উপরের কোডটি কাজ করে, তবে কেবলমাত্র আমি এই মুহুর্তে আসছি যে কোনও নতুন পৃষ্ঠা সম্পাদনা / যুক্ত করার সময় ড্রপডাউন তালিকায় কোনও টেম্পলেট যুক্ত হচ্ছে না added আমি কয়েকটি জিনিস চেষ্টা করছি এবং শীঘ্রই আমার প্রশ্ন আপডেট করব।
page_template
, আমার সম্পাদনায় উপরের কোডটি বর্তমানে ব্যবহৃত হচ্ছে। আমার কি template_redirect
হুক ব্যবহার করার এবং তারপরে page_template
সেখানে ফিল্টার যুক্ত করার দরকার আছে?