শিরোনাম-ট্যাগ এবং দস্তাবেজ_ শিরোনাম_পর্বগুলি সহ সমস্যাগুলি


12

Wordpress version 4.5.1

আমি নির্দিষ্ট টেম্পলেটটিতে পৃষ্ঠার শিরোনামকে গতিশীলভাবে আপডেট করার চেষ্টা করছি। প্রচুর খনন এবং wp_title()পরিবর্তনগুলি সম্পর্কে জানার পরে , আমি ব্যবহার করার চেষ্টা করছি document_title_parts। তবে আমি মোটেও ফিল্টারটি চালাতে পারছি না।

আমি একটি শিশু থিমে আছি functions.php,:

add_theme_support( 'title-tag' );
//add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });

add_filter( 'document_title_parts', function( $title )
{
    error_log('here');
    return $title;

}, 10, 1 );

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

আমি চেষ্টা করেছি pre_get_document_title, যা পৃষ্ঠা লোডে আগুন দেয়, যদিও আমি এটি শিরোনামটি পরিবর্তনের জন্য পেতে অক্ষম unable

তাই! আমি হয় ফিল্টারটি ভুল ব্যবহার করছি, আমার থিমটি সঠিকভাবে সেট আপ করিনি, বা অন্য কিছু সম্পর্কে আমি অবগত নই। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে!

আরও বিশদ যুক্ত করতে সম্পাদনা করুন

একটি এনআইএন ফাংশন চেষ্টা করা হচ্ছে, তবে এটিও কাজ করছে না: https://gist.github.com/anonymous/6db5af892a4cf4fb029655167d7002a4

এছাড়াও, যখন আমি কোনো রেফারেন্স সরিয়েছি <title>থেকে header.php, প্রকৃত সাইটে শিরোনাম এখনও পর্যন্ত সোর্সে দেখানো হয়।


আপনি কেন এই লাইনটি মন্তব্য করেছিলেন //add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });? এটি থিম সমর্থন যুক্ত করার সঠিক ব্যবহার।
সুমিত

@ সুমিত আমি মন্তব্য করা সংস্করণ এবং সক্রিয় সংস্করণ উভয়ই চেষ্টা করেছি।
হুকডনউইনটার

হয়ত add_theme_support()কোনও ডিএন হুকের মধ্যে ফাংশন যুক্ত করার চেষ্টা করুন । আরেকটি বিষয় হ'ল এইচটিএমএল ট্যাগ না থাকার জন্য আপনি নিজের header.phpফাইলটি ওভাররাইট করে তা নিশ্চিত করা । <title>
হাওডি_এমসিজি

@ হাওডি_এমসিজি কেবল এটি চেষ্টা করেছেন, এখনও কিছুই নেই। gist.github.com/anonymous/6db5af892a4cf4fb029655167d7002a4
হুকডনউইনটার

@ হুকডাউনউইন্টার এবং আপনি কি নিশ্চিত যে আপনার কোনও <title>ট্যাগ নেই header.php? 10সঙ্গে প্রতিস্থাপন চেষ্টা করুন PHP_MAX_INT। এছাড়াও, পাস হওয়া প্যারামিটারটি স্ট্রিং মানের পরিবর্তে একটি অ্যারে is
হাওডি_এমসিজি

উত্তর:


13

আমি আমার বিকাশের জায়গায় আপনার ফিল্টার চালিয়েছি। এটি কাজ করে না। তারপরে আমি ইওয়েস্ট এসইও প্লাগইনটি বন্ধ করে দিয়েছিলাম, যা আমি জানতাম পৃষ্ঠার শিরোনামের সাথেও গোলমাল করছে। তারপর এটি কাজ করে। সুতরাং আমার পরামর্শটি হ'ল অন্য একটি প্লাগইন এটির সাথে গোলমাল করছে।

ইয়োস্টের ক্ষেত্রে এটি pre_get_document_titleখালি খালি ফিরে আসার জন্য একটি ফিল্টার কল ছিল । যে ক্ষেত্রে wp_get_document_titleসংক্ষিপ্ত circuited হয় এবং সহ ফাংশন, বাকি documents_title_partsফিল্টার, মূল্যায়ন করা হয় না, হিসাবে আপনি প্রথম কোড লাইন থেকে দেখতে পারেন:

$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
    return $title;
    }

সুতরাং, আমি আপনার ফিল্টারটি নিয়েছি এবং হুকটি এতে পরিবর্তন করেছি pre_get_document_title। এটি কাজ করে না। তারপরে আমি ইওস্টে একই ফিল্টারের চেয়ে উচ্চতর স্তরে অগ্রাধিকার পরিবর্তন করেছি। তারপর এটি কাজ করে। সুতরাং, আমি আপনার সেট আপ সম্পর্কে জানি না, তবে আমি আপনাকে এটি ব্যবহার করে দেখুন:

add_filter( 'pre_get_document_title', function( $title )
  {
    error_log('here');
    return $title;
  }, 999, 1 );

1
তুমি বুঝতে পেরেছ! আমি একই জিনিসটি পেয়েছি এবং ইয়োস্টকে নিষ্ক্রিয় করেছি। আমি সবেমাত্র সক্রিয় করেছি এবং আপনার অগ্রাধিকার ব্যবহার করেছি এবং এটি কার্যকর হয়েছে। ধন্যবাদ!
হুকডনউইনটার

হুক্স সম্পর্কে এখানে আরও কিছু: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জার
প্রশ্নসন 109869/…

আমার সাইট থেকে, pre_get_document_titleঅগ্রাধিকার 15 যথেষ্ট।
Vee

7

কিছু পরীক্ষা-নিরীক্ষার পরে আমি নীচের পরামর্শে এসেছি: এটি কি <title>আপনার পিতামাতার থিমের ভিতরে ট্যাগ "হার্ড কোডড" থাকে header.php? যদি এটি হয় তবে আপনি <title>নিজের চাইল্ড থিমের ট্যাগটি মুছে ফেলার চেষ্টা করতে পারেন header.php(আপনার পিতা-মাতার অনুলিপিটি header.phpআপনার চাইল্ড থিম ফোল্ডারে কপি করুন ) এবং তারপরে থিম সমর্থনটি যুক্ত করুন functions.php:

add_theme_support( 'title-tag' );

আমি এই পরামর্শটিতে আমাকে কী নেতৃত্ব দেবে তা ব্যাখ্যা করার চেষ্টা করব: আপনি এবং অন্যরা যেভাবে পরামর্শ দিয়েছেন আমি চেষ্টা করেছি - তবে এটি প্রমাণিত হয়েছে যে উত্স কোডে আমি দুটি <title>ট্যাগ পেয়েছি । প্রথমটির মানক শিরোনাম ছিল , দ্বিতীয়টির পরিবর্তিত শিরোনাম । তবে (অবশ্যই) ব্রাউজারের শিরোনাম বারে আমি কেবল ডিফল্ট শিরোনাম দেখতে পেতাম।

তারপরে আমি header.phpযে প্যারেন্ট থিমটি ব্যবহার করেছি তার চেক করেছি (বিশটি) এবং <title>ট্যাগটি সত্যিই শক্তভাবে এই টেমপ্লেটের ভিতরে কোড করা হয়েছিল:

<title><?php wp_title( '|', true, 'right' ); ?></title>

আমি এটি সরানোর পরে, আমি নীচের কোডটি চাইল্ড থিমের সাথে যুক্ত করেছি functions.phpএবং এটি কার্যকর হয়েছে:

/**
 * Theme support added
 */

function add_theme_support_child() {

    add_theme_support( 'title-tag' );

}

add_action( 'after_setup_theme', 'add_theme_support_child', 11 );


/**
 * Change the title of a page
 * 
 */

function change_title_for_a_template( $title ) {

// Check if current page template is 'template-homepage.php'
// if ( is_page_template( 'template-homepage.php' ) ) {

    // change title parts here
    $title['title'] = 'My Title'; 
    $title['tagline'] = 'My fancy tagline'; // optional
    $title['site'] = 'example.org'; //optional

// }

return $title; 

}

add_filter( 'document_title_parts', 'change_title_for_a_template', 10, 1 );

সুতরাং এটি মূলত <title>টেমপ্লেট থেকে ট্যাগটি সরিয়ে নেওয়ার আগেও কাজ করেছিল - কেবল তখনই দুটি <title> ট্যাগ ছিল যা পরবর্তীতে উপেক্ষা করা হয়েছিল। আপনার থিম নিয়েও কি একই সমস্যা হতে পারে?

যেহেতু ডাব্লুপিপি ৪.৪.০ তবে <title>ট্যাগটি গতিশীলভাবে ফাংশন দ্বারা তৈরি করা হয়েছে_wp_render_title_tag() যা মূলত অন্য ফাংশনটি কল করে wp_get_document_title()এবং ফলাফলের চারপাশে এইচটিএমএল ট্যাগগুলিকে আবৃত করে। দীর্ঘ গল্প সংক্ষিপ্ত: যদি আপনার থিমটির ট্যাগটি header.phpঅনুপস্থিত থাকে <title>, তবে সম্ভবত আপনি এখানেpre_get_document_title বা document_title_partsবর্ণিত হিসাবে শিরোনামটিকে ওভাররাইড করতে পারেন :

1) সরাসরি শিরোনাম পরিবর্তন করুন:

add_filter('pre_get_document_title', 'change_the_title');
function change_the_title() {
    return 'The expected title';
}

2) শিরোনাম অংশ ফিল্টারিং:

add_filter('document_title_parts', 'filter_title_part');
function filter_title_part($title) {
    return array('a', 'b', 'c');
}

3

আপনার পোস্টটি নীচে থেকে নীচে এবং নীচে থেকে পড়ে, আপনার সমস্ত সম্ভাব্যতার মধ্যে একটি ফিল্টার রয়েছে যা ফিল্টারটির মাধ্যমে শিরোনামটি পার করছে pre_get_document_title। নিম্নলিখিত বিবৃতি এখানে ক্লু:

আমি চেষ্টাও করেছি pre_get_document_title, যা পৃষ্ঠা লোডে আগুন দেয়,

এর জন্য স্যুর কোডটিwp_get_document_title() দেখে আমরা নীচের কোডটি দেখতে পাই:

$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
    return $title;
}

এর অর্থ কী, যখনই কোনও খালি শূন্য মান pre_get_document_titleফিল্টারের মধ্য দিয়ে যায় , wp_get_document_title()ফাংশনটি ফিল্টারটির মধ্য দিয়ে যে মানটি পাঠিয়েছিল তা ফিরিয়ে দেবে pre_get_document_title। এই ক্ষেত্রে, document_title_separatorফিল্টার এবং document_title_partsফিল্টার কখনই কার্যকর হবে না কারণ এগুলি কেবলমাত্র pre_get_document_titleফিল্টার পরে চালানো হয় ।

আপনি আরও কিছু কী বলেছিলেন তা দেখে:

... যদিও আমি আসলে এটি শিরোনাম পরিবর্তন করতে পারিনি।

আপনার অবশ্যই pre_get_document_titleকর্তৃপক্ষের সাথে একটি ফিল্টার রয়েছে যা আপনার একই ফিল্টারের উদাহরণকে ওভাররাইড করে this এবং এই ফিল্টারটির কারণে, ফাংশনটি এতে যা কিছু পাস হবে তা ফিরিয়ে দেয় যার ফলে আপনার document_title_partsফিল্টারটি কার্যকর হয় না uted

আপনাকে যা করতে হবে তা হ'ল হয় grepবা একটি ভাল সম্পাদক এবং wp-contentসেই pre_get_document_titleফিল্টারটির জন্য আপনার পুরো ফোল্ডারটি অনুসন্ধান করা । আপনি একবার সেই ফিল্টারটি সনাক্ত করলে আপনি সেই ফিল্টারটি সরিয়ে ফেলতে এবং এটিকে আপনার নিজের সাথে প্রতিস্থাপন করতে সেখান থেকে নিতে পারেন


উত্তর করার জন্য ধন্যবাদ! দুর্ভাগ্যক্রমে, ডাব্লুপি-কন্টেন্টের সমস্ত অনুসন্ধান করা document_title_partsবা pre_get_document_title0 টি ফলাফল প্রদান করে। আমি ডাব্লুপি-কন্টেন্টের সমস্ত অনুসন্ধান করতে সাবলাইম টেক্সট 2 ব্যবহার করছি ...
হুকডাউনউইন্টার

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

@ পিটারগুজন যখন প্রথম ফিল্টারটি খালি খালি ফিরে আসে তখন ফাংশনটি সংক্ষিপ্তভাবে প্রচারিত হয় এবং দ্বিতীয় ফিল্টারটি মূল্যায়ন হয় না।
সিজেবিজে

@ সিজেবিজে হ্যাঁ, সঠিক, আমি আমার উত্তরে যা বলেছিলাম, বিষয়টি কী। ওপি যেমন বলেছে, তিনি ফিল্টারটি খুঁজে পাচ্ছেন না pre_get_document_title, দ্বিতীয় ফিল্টারটি কেন চালিত হবে না তা পুরোপুরি কী ব্যাখ্যা করেছিল। এটি pre_get_document_titleফিল্টারটি খালি ছেড়ে দেয় , যার অর্থ ফাংশনটিতে থাকা অন্য দুটি ফিল্টারকে অবশ্যই গুলি চালানো উচিত, তবে তারা তা দেয় না। এটি একটি দূষিত ওয়ার্ডপ্রেস কোর উপসংহারে ছেড়ে যায়।
পিটার গুজন

সহজেই আমি সেই ফিল্টারটি সহজেই কাজ করতে পেলাম।
সিজেবিজে

2

অভিভাবক থিম যদি সমর্থন ঘোষনা title-tagনা করে তবে আপনি চাইল্ড থিমে এটি করতে পারেন

/**
 * Theme support should be added on `after_setup_theme`
 */
function add_theme_support_child() {

    add_theme_support( 'title-tag' );

}

add_action( 'after_setup_theme', 'add_theme_support_child', 11 );

document_title_partsপ্রত্যাশিত রিটার্ন টাইপের অ্যারে ফিল্টার করুন , আপনার প্রয়োজনীয়তা অনুসারে যদি শর্তটি পরিবর্তন করতে নিশ্চিত হন বা এটি কাজ করে তবে পরীক্ষার জন্য পুরো সাইট জুড়ে শিরোনাম পরিবর্তন করতে এটি পুরোপুরি সরিয়ে ফেলুন।

/**
 * Change title of a page conditionally
 * 
 * @return $title - type array
 * $title['title'] - Page Title
 * $title['tagline'] - Site Tagline
 */
function change_title_for_a_template( $title ) {

    // Check if current page template is 'template-homepage.php'
    if ( is_page_template( 'template-homepage.php' ) ) {
        $title['title'] = 'Changed title for a template';
    }

    return $title;

}

add_filter( 'document_title_parts', 'change_title_for_a_template' );

আপনি কি দুটি কার্য সম্পাদন করতে পারেন?


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