সমস্ত পোস্ট শিরোনামের কেস কে "শিরোনাম কেস" এ পরিবর্তন করবেন


13

আমি তার ওয়ার্ডপ্রেস ওয়েবসাইটটি দিয়ে আমার বাবাকে সহায়তা করছি।
এটির ইউপিপ্রেসেসে টাইটেলসের সাথে 1,700 টিরও বেশি পোস্ট রয়েছে।

আমরা এগুলি ডাটাবেসে "শিরোনাম কেস" এ পরিবর্তন করতে চাই (সম্ভবত এই পিএইচপি স্ক্রিপ্টটি ব্যবহার করছি )।

ওয়ার্ডপ্রেস "টু টাইটেল কেস" প্লাগ-ইন টেমপ্লেট স্তরে কেস পরিবর্তন করে - আমরা এটি ডাটাবেস স্তরে পরিবর্তন করতে চাই।

ওয়ার্ডপ্রেস ডাটাবেসের সমস্ত শিরোনামে স্ক্রিপ্টটি প্রয়োগ করার সর্বোত্তম উপায় কী হবে?
আমি স্ক্র্যাচ থেকে কিছু কোড লিখতে পারি তবে আমি অনুমান করছি যে সেখানে বিদ্যমান কোড / পদ্ধতি রয়েছে যা সমস্ত শিরোনাম জুড়ে একটি ফাংশন / পদ্ধতি প্রয়োগ করতে পারে।


1
আমি একটি লুপ ফর্ম স্ক্র্যাচ লিখতে হবে। এটি বেশ সহজ হওয়া উচিত তবে আপনি যদি প্লাগইন কোডটি পুনরায় ব্যবহার করতে চান তবে প্রাসঙ্গিক অংশগুলি পোস্ট করুন।
s_ha_dum

আমি শিরোনামগুলি ধরে নিয়েছি যেখানে বড় হাতের মধ্যে ম্যানুয়ালি যুক্ত?
ব্র্যাড ডালটন

@ ব্র্যাডাল্টন - এটি সঠিক, তিনি ইউপিআরসিএএসইএসে তার নিবন্ধ / ব্লগ শিরোনামে টাইপ করার অভ্যাসে পড়ে গেলেন।
ব্যারনগ্রাইভ

আপনি কি এর জন্য এখনও কোনও সমাধান খুঁজে পেয়েছেন?
ব্র্যাড ডাল্টন

@ ব্র্যাডডাল্টন - হ্যাঁ, আমি "পোস্টগুলি আপডেট করার" নীচে যে সমাধানটি নির্বাচন করেছি
ব্যারনগ্রাইভ

উত্তর:


19

পোস্ট আপডেট করা হচ্ছে

$all_posts = get_posts(
    'posts_per_page' => -1,
    'post_type' => 'post'
);

foreach ( $all_posts as $single ) {
    wp_update_post( array(
        'ID' => $single->ID,
        'post_title' => to_title_case( $single->post_title ) // see function below
    ));
}

একটি স্ট্রিংকে "শিরোনাম কেস" এ রূপান্তর করা

এবং, ডাব্লুপি-তে প্রাসঙ্গিক না হয়েও, সম্পূর্ণতার জন্য:

function to_title_case( $string ) {
     /* Words that should be entirely lower-case */
     $articles_conjunctions_prepositions = array(
          'a','an','the',
          'and','but','or','nor',
          'if','then','else','when',
          'at','by','from','for','in',
          'off','on','out','over','to','into','with'
     );
     /* Words that should be entirely upper-case (need to be lower-case in this list!) */
     $acronyms_and_such = array(
         'asap', 'unhcr', 'wpse', 'wtf'
     );
     /* split title string into array of words */
     $words = explode( ' ', mb_strtolower( $string ) );
     /* iterate over words */
     foreach ( $words as $position => $word ) {
         /* re-capitalize acronyms */
         if( in_array( $word, $acronyms_and_such ) ) {
             $words[$position] = mb_strtoupper( $word );
         /* capitalize first letter of all other words, if... */
         } elseif (
             /* ...first word of the title string... */
             0 === $position ||
             /* ...or not in above lower-case list*/
             ! in_array( $word, $articles_conjunctions_prepositions ) 
         ) {
             $words[$position] = ucwords( $word );
         }
     }         
     /* re-combine word array */
     $string = implode( ' ', $words );
     /* return title string in title case */
     return $string;
}

স্পষ্টতই, শব্দের দুটি তালিকাই প্রসারিত হতে পারে - নিম্ন-মামলার তালিকা বিশেষত আরও প্রস্তুতির দ্বারা, বর্তমান সাইটে প্রায়শই ব্যবহৃত হয় এমন সংক্ষিপ্ত নামগুলি।

ডাব্লুপি-নির্দিষ্ট অংশটি কেবল কোনওভাবেই, উপরের কোড ব্লক।


1
সঙ্গে ওয়ার্ডপ্রেস, মাইএসকিউএল এবং ওপেন অফিস একটি শিরোনাম : ডি
fuxia

: ডি কেবল এই 2 দিন দেখেছি। হ্যাঁ, এটি একটি গ্যাচা ...
জোহানেস পিল

"টেমপ্লেট আপডেট করা" অংশটি আমার টেম্পলেট ফাইলটির জায়গায় কীভাবে ফিট করে <?php the_title(); >?
পিট

9

পোস্ট শিরোনামটি যখন দেখা হবে আপনি এটি পরিবর্তন করতে পারেন:

add_action( 'the_post', 'wpse_94856_title_update' );

function wpse_94856_title_update( $post )
{
    if ( empty ( $post->post_title ) )
        return;

    $new_title = mb_convert_case( $post->post_title, MB_CASE_TITLE, "UTF-8" );

    if ( $post->post_title === $new_title )
        return;

    wp_update_post(
        array (
            'ID'         => $post->ID,
            'post_title' => $new_title
        )
    );

    // $post is passed by reference, so we update this property in real time
    $post->post_title = $new_title;
}

এই উত্তরের উপর ভিত্তি করে এটি কেবল একটি ধারণা । পরীক্ষা করা হয়নি


আমার জন্য ভাল কাজ করে।
পিট

0

একটি দ্রুত "সমাধান" টেক্সট-ট্রান্সফর্ম ব্যবহার করে সিএসএসের মাধ্যমে হবে ।

text-transform: capitalize;

তবে, আপনি যদি ডাটাবেসে মূলধন পরিবর্তন করতে পারেন তবে এটি সেরা হবে কারণ এটি শৈলীর বিষয়, সামগ্রী নয় :) আপনি যদি বড় হাতের শিরোনাম চান, তবে সিএসএসের মাধ্যমে এটি করুন বা আপনার এই ধরণের সমস্যা হবে!


1
এটি কেবল ছোট হাতের শব্দের মূলধন করতে পারে, এমন শব্দ নয় যা ইতিমধ্যে মূলধন হয়।
পিট

0

এটি শিরোনাম রেফারেন্স ভিত্তিতে পৃথক শিরোনামে কাজ করে

 <?php print  ucwords(strtolower(get_the_title())); ?>

স্ট্র্টলওয়ার শিরোনামকে ছোট হাতের মধ্যে পরিণত করে। তারপরে ইউকওয়ার্ডস এটি যথাযথ ক্ষেত্রে করে

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