শর্টকোড সর্বদা পৃষ্ঠার শীর্ষে প্রদর্শিত হয়


15

লুপস-নেম.এফপি এর মাধ্যমে বিভিন্ন লুপগুলিতে টানতে আমি একটি শর্টকোড ব্যবহার করছি। কোনও কারণে এটি সর্বদা পৃষ্ঠার শীর্ষে থাকে। আমি এটিকে গুগল করেছিলাম এবং রিটার্নের পরিবর্তে প্রতিধ্বনি ব্যবহার করার ফলে সমস্যার সৃষ্টি হয় তবে আমার কোড সহ আমি ইকো ব্যবহার করছি না। শর্টকোডটি এখানে:

// setup the shortcode for use
function friendly_loop_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'category' => '',
'module' => ''
), $atts ) );

include(locate_template('loop-'.$module.'.php'));
 }

কোন ধারণা কেন এই ঘটছে?


একটি ফাইল অন্তর্ভুক্ত করার জন্য শর্টকোড? আমি এটি একটু অদ্ভুত মনে।
রটউইক গাঙ্গুরদে

1
'আমার কোড সহ আমি প্রতিধ্বনি ব্যবহার করছি না' - লুপ-মডিউল.পিএফপি ফাইলগুলি প্রতিধ্বনিত হচ্ছে বা তাদের আউটপুট ফিরে আসছে?
মাইকেল

এই মুহুর্তে নয় - ফাইলটিতে কেবল "পরীক্ষার" লিখিত অনুচ্ছেদে ট্যাগ রয়েছে যাতে আমি এটি দেখতে পারি যে এটি কীভাবে কাজ করে।
জন জো

get_template_part('loop',$module)পরিবর্তে এটি ব্যবহার করুন, এটি সুন্দর, টাইপ করা তাত্ক্ষণিক, পিতামাতার / সন্তানের থিমগুলিকে সমর্থন করে এবং এটি ওয়ার্ডপ্রেসে টেমপ্লেটগুলি অন্তর্ভুক্ত করার প্রস্তাবিত পদ্ধতি (হ্যাঁ সনাক্তকৃত_পৃষ্ঠিকাটি সেগুলি কিছু করতে পারে তবে দেখতে এটি কতটা কম পঠনযোগ্য!)
টম জে নওয়েল

উত্তর:


16

আপনি আউটপুটটি এভাবে বাফার করতে পারেন:

ob_start();
include(locate_template('loop-'.$module.'.php'));
return ob_get_clean();

সম্পাদনা করুন। আমি এটি চেষ্টা করেছিলাম, ভাল কাজ করেছি।

function friendly_loop_shortcode( $atts, $content = null ) {
     extract( shortcode_atts( array(
         'category' => '',
         'module' => ''
     ), $atts ) );

     ob_start();
     include(locate_template('loop-'.$module.'.php'));
     $output = ob_get_clean();
     //print $output; // debug
     return $output;
}

if (!is_admin()) {
     add_shortcode('test', 'friendly_loop_shortcode' );
}


আমি ভীত যে কাজ করে না।
জন জো

কি ভুল ছিল? আমি চেষ্টা এবং উত্তর আপডেট
offroff

8

আপনার অন্তর্ভুক্ত ফাইলটি মূলত প্রতিধ্বনিত এইচটিএমএল। এই ক্ষেত্রে

<?php
 //Some PHP
 echo 'test';
 //Some more PHP
 ?>

এটার মতই

<?php
 //Some PHP 
 ?>
 test
<?php
 //Some more PHP
 ?>

দুজনেই প্রত্যাবর্তনের চেয়ে তাত্ক্ষণিক মুদ্রিত হয়ে যায়। এটি মুদ্রিত হওয়ার পরে এটি পৃষ্ঠা বিষয়বস্তুর আগে উপস্থিত হয়। বিষয়বস্তুতে অন্তর্ভুক্ত করার জন্য আপনাকে কিছু ফিরিয়ে দিতে হবে।

@ রতউইক গ্যাঙ্গুরডে যেমন উল্লেখ করেছেন - একটি শর্টকোডে কোনও টেম্পলেট ফাইল অন্তর্ভুক্ত করা অস্বাভাবিক।


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

@ অফরফের উত্তর দেখুন - এটির কাজ করা উচিত
স্টিফেন হ্যারিস

1
" ভাল আমি থিম ব্যবহারকারীদের থিমটি কাস্টমাইজ করতে যতটা সম্ভব সহজ করতে চাই " - ঠিক কতটি বিমূর্ত স্তর আবশ্যক? আপনি একটি শর্টকোডের ভিতরে একটি কাস্টম টেম্পলেট ফাইল পেয়েছেন। আমি দেখতে পাচ্ছি না যে এটি কীভাবে ব্যবহারকারীদের জন্য বিষয়গুলিকে আরও সহজ করে তোলে। আপনি যদি সমস্ত পোস্টে স্থিতিশীল সামগ্রী যুক্ত করার ক্ষমতা সরবরাহ করতে চান তবে কেবল dynamic_sidebar()লুপের ভিতরে একটি সংজ্ঞা দিন এবং ব্যবহারকারীদের উইজেট যুক্ত করুন add
চিপ বেনেট

সীমান্তে একটি সাধারণ সিএসএস শ্রেণি পরিবর্তন করতে থিম ব্যবহারকারীদের বেশিরভাগই একটি বিশাল শর্টকোড ফাইলের মাধ্যমে ট্রলিংয়ের প্রশংসা করবে না। যদি আমি স্ট্যান্ডার্ড লুপ-নেম.এফপি সিস্টেমটি ব্যবহার করে সবকিছু ভেঙে ফেলি তবে তাদের যা প্রয়োজন তা খুঁজে পাওয়া তাদের পক্ষে অনেক দ্রুত। আদর্শ নয় তবে আমি তাদের খুশি রাখতে পেরেছি;)
জন জো

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