কেন আমি_পেজটি ফাংশন.এফপি ফাইলে রেখে দিলে কাজ হচ্ছে না?


11

আমার পেজটির নাম "অ্যাপল" আছে, পৃষ্ঠার আইডি আইডি 2533।

পেজ.এফপি ফাইলে আমার লাইন রয়েছে:

echo $bannerimg 

এবং ফাংশন.এফপি এই ফাংশন:

if ( is_page( '2533' ) ) {    
    // also tested with 'Apple'
    $bannerimg = 'apple.jpg';

} elseif ( is_page( 'test' ) ) {    
    $bannerimg = 'test.jpg';

} elseif ( is_page( 'admissions' ) ) { 
    $bannerimg = 'admissions.jpg';

} else { 
    $bannerimg = 'home.jpg';
}  

পয়েন্টটি হ'ল অ্যাপল, পরীক্ষা এবং ভর্তি সহ প্রতিটি পৃষ্ঠায় home ব্যানারিমগ প্রতিধ্বনিত "home.jpg"।

এমনকি আমি_আইডি এবং $ পৃষ্ঠা-> আইডি ব্যবহার করে সমস্ত আইডি চেক করেছি। কিছুই নেই। সুতরাং আমি অনুমান করি যে উপরের কোডটিতে কিছু ভুল আছে?


নিম্নলিখিত থ্রেডের একটি সমাধান আমাকে অনুরূপ সমস্যা সমাধানে সহায়তা করেছে: wordpress.stackexchange.com/questions/225359/…
লেফান

উত্তর:


16

functions.phpকোন পৃষ্ঠাটি লোড হচ্ছে তা জানতে পারার আগে প্রক্রিয়াজাত করা হয়। ভেরিয়েবলের মান নির্ধারণের পরিবর্তে আপনার কোডটিকে ফাংশনে রাখুন এবং সেই ফাংশনটি page.phpটেমপ্লেটে ব্যবহার করুন ।


আমি এই কোডটি একটি ফাংশনের অভ্যন্তরেও চেষ্টা করেছি, তবে দেখে মনে হচ্ছে এটি কিছুই দেয় না। আমি জানি এটি সমস্ত পৃষ্ঠাতে রেখে দেওয়া উচিত। পিএফপি সাহায্য করা উচিত, তবে এটি মার্জিত নয়।
ওয়ার্ডপ্রেসার

আমি পৃষ্ঠা রেফারেন্সের জন্য আইডি ব্যবহার করি না তবে কোডেক্স দেখায় যে পৃষ্ঠার আইডিতে কোনও একক উদ্ধৃতি নেই, আপনি কি চেষ্টা করেছেন? is_page(); // When any single Page is being displayed. is_page(42); // When Page 42 (ID) is being displayed. is_page('Contact'); // When the Page with a post_title of "Contact" is being displayed. is_page('about-me'); // When the Page with a post_name (slug) of "about-me" is being displayed. is_page(array(42,'about-me','Contact')); // Returns true when the Pages displayed is either post ID 42.সম্ভবত কেস নয় তবে একটি শট মূল্য
মার্টিনজেজে

1
@ মার্টিন উদ্ধৃতি সম্পূর্ণরূপে সঠিক নয়, তবে কোনও কিছুই ভাঙবে না - এটি
ডিফল্টর

আপনি যদি ক্যোয়ারীতে একটি ফিল্টার যুক্ত করতে চান তবে কী হবে? আপনি টেম্পলেটটিতে এটি করতে পারবেন না। তবে আপনি এটি ফাংশন.এফপি ফাইলটিতে করতে পারবেন না, হয়!
রেগি

@ গ্রেগি কেন? আপনার সম্ভবত এটি সম্পর্কে নতুন প্রশ্ন জিজ্ঞাসা করা উচিত। :)
রাস্তার

5

get_header যদি আপনি এটি ছেড়ে যেতে চান তবে কাজ করা উচিতfunctions.php

add_action('get_header', function() {
    if ( is_page( '2533' ) ) {    
    // also tested with 'Apple'
        $bannerimg = 'apple.jpg';

    } elseif ( is_page( 'test' ) ) {    
        $bannerimg = 'test.jpg';

    } elseif ( is_page( 'admissions' ) ) { 
        $bannerimg = 'admissions.jpg';

    } else { 
        $bannerimg = 'home.jpg';
    }  
});

4

@ রার্স্ট যা পোস্ট করেছেন এবং আপনি যে মন্তব্য করেছেন তা প্রসারিত করে আরও সুন্দর সমাধান হ'ল পেজ.এফপি এর ভিতরে আপনার নিজের ফিল্টার তৈরি করা এবং এটি ফাংশন.এফপি-র ভিতরে কোনও ফাংশন থেকে এঁকে দেওয়া, উদাহরণস্বরূপ:

আপনি page.php

$bannerimg = apply_filters('my_bannerimg','defualt_img.jpg');

এবং আপনার ফাংশন.এফপি

add_filter('my_bannerimg','what_page_is_it');

function what_page_is_it($img){
    if ( is_page( '2533' ) ) {    
        return 'apple.jpg';
    } elseif ( is_page( 'test' ) ) {    
        return 'test.jpg';
    } elseif ( is_page( 'admissions' ) ) { 
        return 'admissions.jpg';
    } else { 
        return 'home.jpg';
    }  
}

1

এটি আপনার ফাংশন.এফপি-তে যুক্ত করুন, স্ক্রিপ্টের নাম পরিবর্তন করুন কিছু কোড এবং পৃষ্ঠার নাম:

   add_action('wp_enqueue_scripts', 'wpt_theme_js');

    function wpt_theme_js() { 
        if ( is_page('somePage') ) {
            wp_enqueue_script('someCode_js', get_template_directory_uri() . '/js/someCode.js', '', '', true);
        }
    }

0

কোয়েরি সেট আপ হওয়ার পরে আপনার ফাংশনটি ওয়ার্ডপ্রেস প্রক্রিয়াটির একটি পর্যায়ে কল করতে হবে

ইন functions.php:

function mytheme_get_banner_img() {
    if ( is_page( '2533' ) ) {    
        // also tested with 'Apple'
        $bannerimg = 'apple.jpg';

    } elseif ( is_page( 'test' ) ) {    
        $bannerimg = 'test.jpg';

    } elseif ( is_page( 'admissions' ) ) { 
        $bannerimg = 'admissions.jpg';

    } else { 
        $bannerimg = 'home.jpg';
    }  
    return $bannerimg;
}

তারপরে, আপনার page.phpটেম্পলেট ফাইলে, যেখানেই আপনাকে ফেরত / আউটপুট দরকার হবে $bannerimg:

<?php
$bannerimg = mytheme_get_banner_img();
?>

তারপরে, আপনার যা যা প্রয়োজন তা করতে পারেন $bannerimg: এটিকে কোনও <img>ট্যাগে ফেলে দিন etc.


0

আপনি কি wp_head();আপনার থিমটিতে সঠিকভাবে ইত্যাদি ঘোষণা করেছেন ?

এছাড়াও, is_pageউদ্ধৃতি ছাড়াই একটি আইডি গ্রহণ করে।

সমস্যাটি হ'ল আপনি ইতিমধ্যে পৃষ্ঠার টেমপ্লেটে রয়েছেন তাই এটি একটি পৃষ্ঠা, আপনি জিজ্ঞাসা করা $post->IDবা সেট আপ করা ভাল হতে পারেpage-apple.php


is_page()পাশাপাশি পূর্ণসংখ্যা হিসাবে আইডি গ্রহণ করতে পারে
বাইনারনেট

হ্যাঁ তবে একটি ইন্টার এর উদ্ধৃতি দেওয়া উচিত নয়
অ্যালেক্স

এটি অদ্ভুত, কারণ আমি কোথাও
ওয়ার্ডপ্রেসার

এবং এটি একটি খারাপ অনুশীলন।
অ্যালেক্স

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