এমন কোনও ওয়ার্ডপ্রেস প্লাগইন রয়েছে যা একটি প্লাগইন ফাইলকে কাস্টম পৃষ্ঠার টেম্পলেট হিসাবে নিবন্ধিত করে?


9

আমার একটি প্লাগইন তৈরি করতে হবে যা ডাব্লুপি-অ্যাডমিনে কাস্টম পৃষ্ঠার টেম্পলেটগুলি উপলব্ধ করে। আমি ভাবছি যে কেউ ইতিমধ্যে এটি মোকাবেলা করেছে, কারণ এটি দেখতে বেশ সাধারণ প্রক্রিয়া বলে মনে হচ্ছে?


আমি প্রশ্নটি বেশ বুঝতে পারি না। আপনি এমন একটি প্লাগইন চান যা প্লাগইনে সংজ্ঞায়িত কাস্টম টেম্পলেট সন্নিবেশ করায়?
স্টিভেন

উত্তর:


7

রাস্টের উত্তরের মতো আপনি মূল ফাইলগুলি সম্পাদনা না করে পৃষ্ঠা বৈশিষ্ট্যগুলি মেটাবক্স অপসারণ এবং কিছুটা পরিবর্তন করে একই কোডটি ব্যবহার করে তৈরি করতে পারেন really নীচের কোডটি /admin/incolve/meta-boxes.php এর কোড এবং আমি আপনার অতিরিক্ত পৃষ্ঠা টেম্পলেট বিকল্পগুলি কোথায় যাবে তা দেখানোর জন্য একটি মন্তব্য যুক্ত করেছি:

function page_attributes_meta_box($post) {
    $post_type_object = get_post_type_object($post->post_type);
    if ( $post_type_object->hierarchical ) {
        $pages = wp_dropdown_pages(array('post_type' => $post->post_type, 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0));
        if ( ! empty($pages) ) {
        ?>
        <p><strong><?php _e('Parent') ?></strong></p>
        <label class="screen-reader-text" for="parent_id"><?php _e('Parent') ?></label>
        <?php echo $pages; ?>
        <?php
        } // end empty pages check
    } // end hierarchical check.
    if ( 'page' == $post->post_type && 0 != count( get_page_templates() ) ) {
        $template = !empty($post->page_template) ? $post->page_template : false;
        ?>
        <p><strong><?php _e('Template') ?></strong></p>
        <label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
        <option value='default'><?php _e('Default Template'); ?></option>
        <?php page_template_dropdown($template); ?>

        // add your page templates as options

        </select>
        <?php
    } ?>
    <p><strong><?php _e('Order') ?></strong></p>
    <p><label class="screen-reader-text" for="menu_order"><?php _e('Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
    <p><?php if ( 'page' == $post->post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?></p>
    <?php
}

এটি আপনার ক্ষেত্রে কোনও স্থির কিনা তা জানেন না তবে আমার যখন একটি বিল্ট ইন থিমটিতে পোস্ট টাইপ প্রদর্শন করার প্রয়োজন ছিল তখন আমার একটি স্মাইলার কেস ছিল এবং তার জন্য আমি ব্যবহার করেছি add_filter('the_content', 'my-function'); এবং আমার ফাংশনটি প্রদর্শন করার জন্য আউটপুট তৈরি করেছে।

অন্য বিকল্পটি হ'ল আপনার প্লাগইনটি বর্তমান থিম ডিরেক্টরিতে টেম্পলেট ফাইল তৈরি করা, এরকম কিছু:

function create_plugins_theme_file(){
    $file_name = TEMPLATEPATH . '/' . $tamplate_name . '.php';
    $handle = fopen($file_name, 'w') or wp_die('Cannot open file for editing');
    $file_contents = <<<OUT
<?php
/*
Template Name: $tamplate_name
*/
?>

//you theme file here

OUT;

   fwrite($handle, $file_contents);
   fclose($handle);
 }

এবং আপনি প্রথমে ফাইলটি উপস্থিত আছে কিনা তা যাচাই করার পরে এটি চালাতে পারেন

if(!file_exists( $file_name)){create_plugins_theme_file();}

আশা করি এর মধ্যে একটি সাহায্য করবে।


আমার উত্তর অনুযায়ী মেটা বাক্সের স্টাফ, বাস পরীক্ষা করবে - এটি কেবল ইস্যুরই একটি অংশ, অন্যটি - কোড যা থিম ডিরেক্টরিতে কেবল তখনই টেমপ্লেট লোড করার চেষ্টা করে। সুতরাং "বাহ্যিক" টেম্পলেট ফাইল সরবরাহ করা এটি লোড করার জন্য পর্যাপ্ত নাও হতে পারে।
রর্স্ট

এজন্য আমি প্লাগইনটিকে থিমের ডিরেক্টরিতে ফাইল তৈরি করতে পরামর্শ দিয়েছিলাম।
বেন্টারনেট

2

আপনি সম্পূর্ণরূপে নিশ্চিত নন যে আপনি কী অর্জন করতে চাইছেন তা আমি বুঝতে পেরেছি, কমপক্ষে আপনি কেন এটি করতে একটি প্লাগইন চাইবেন।

বিভিন্ন পৃষ্ঠা টেম্পলেট তৈরি করার জন্য সাধারণ পদ্ধতিটি হ'ল:

  1. আপনার ACTIVE থিম ডিরেক্টরিতে একটি নতুন পৃষ্ঠা-টেম্পলেট তৈরি করুন (page.php এর একটি অনুলিপি করুন)।

  2. টেমপ্লেটের নাম পরিবর্তন করুন (ফাইলের অভ্যন্তরে)।

    / * টেমপ্লেটের নাম: পূর্ণ প্রস্থ পৃষ্ঠা * /

  3. আপনি যা অর্জন করতে চাইছেন তাতে পৃষ্ঠার কোডটি পরিবর্তন করুন।

  4. আপনি এখন একটি নতুন পৃষ্ঠা তৈরি করতে এবং কোন "টেম্পলেট" ব্যবহার করবেন তা চয়ন করতে পারেন।

বিকল্প পাঠ

...

আমি আশা করি এটিই আপনি অর্জন করার চেষ্টা করছেন?

অফিসিয়াল ডকুমেন্টেশন এখানে: http://codex.wordpress.org/ পৃষ্ঠাগুলি #Crying_ আপনার_আপনি_পেন_সামগ্রী


Woops। নমুনা পিএইচপি কোডটি কিছুটা গণ্ডগোল করে। সঠিক কোড উদাহরণের জন্য লিঙ্কটি দেখুন।
লার্স কাউদাল

2
বিদ্যমান প্লাগইনে কেউ জানার পদ্ধতি ব্যবহার করছে কিনা তা জানতে আগ্রহী: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জার
প্রশ্নস

আমি বিশ্বাস করি যে @trnsfrmr প্লাগইন সক্রিয়করণের পরে ব্যবহারকারীদের জন্য এই টেমপ্লেটটি উপলব্ধ করার জন্য কীভাবে তার নিজের প্লাগইনের ভিতরে প্রাক-সংজ্ঞায়িত পৃষ্ঠা টেম্পলেট (পদক্ষেপের 1-3) তৈরি করবেন সেই উপায় খুঁজছেন। আমি মনে করি তিনি এই সমাধান থিমটি স্বাধীন রাখতে চান।
মিশল মৌ

আহ, ঠিক আছে, আমি সেখানে কিছুটা ভুল বুঝেছি,
স্পষ্টির

2

এটি অর্জন করা বেশ কঠিন বলে মনে হচ্ছে। get_page_templates()ফাংশন সক্রিয়ভাবে যে কোনও কিছু পিতামাতাদের এবং সন্তানের মূল ডিরেক্টরিতে অবস্থিত নয় ards এটি গ্লোবাল ভেরিয়েবলে সঞ্চয় করে না বা টেম্পলেটগুলির উত্পন্ন তালিকা ফিল্টার করার অনুমতি দেয় না।

আমি মনে করি পৃষ্ঠার বৈশিষ্ট্যগুলি মেটা বক্সকে এর জন্য কাঁটাচামচ করা এবং সম্পূর্ণ প্রতিস্থাপন করা দরকার। এবং নিশ্চিত না যে এটি তখনও সম্ভব হবে।

আমি সম্মত হই যে এটিকে কিছুটা বোধগম্য মনে হয় তবে ওয়ার্ডপ্রেস কোডটি খুব সুনির্দিষ্ট যে এটি নামযুক্ত টেম্পলেটগুলি কেবল থিমের ডিরেক্টরি থেকে আসতে চায় to


1

এটি register_theme_directory()চালু হওয়ার কারণগুলির মধ্যে একটি করে কী করছে না ?

http://core.trac.wordpress.org/ticket/10467

সেই সময় এটি বুডিপ্রেস সম্পর্কিত একটি সমস্যা ছিল, যা এখানে এবং সেখানে অতিরিক্ত টেম্পলেটগুলিতে টস করতে চেয়েছিল।

আমি এটি গ্রহণ করেছি যে তারা পৃষ্ঠার টেম্পলেট হিসাবে সঠিকভাবে তালিকাভুক্ত নয়, যদিও:

http://core.trac.wordpress.org/ticket/15803


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