কিছু আলাদা বলার জন্য কাস্টম পোস্ট টাইপের প্রকাশিত বোতামটির পাঠ্য পরিবর্তন করার কোনও উপায় আছে কি? উদাহরণস্বরূপ, প্রকাশের পরিবর্তে সংরক্ষণ করুন। এবং খসড়া বোতামটিও সরাবেন?
কিছু আলাদা বলার জন্য কাস্টম পোস্ট টাইপের প্রকাশিত বোতামটির পাঠ্য পরিবর্তন করার কোনও উপায় আছে কি? উদাহরণস্বরূপ, প্রকাশের পরিবর্তে সংরক্ষণ করুন। এবং খসড়া বোতামটিও সরাবেন?
উত্তর:
আপনি যদি সন্ধান করেন তবে আপনি /wp-admin/edit-form-advanced.php
মেটা বাক্সটি খুঁজে পাবেন:
add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core');
নোট করুন __('Publish')
- ফাংশনটি যেখানে আপনি ফিল্টার পাবেন সেখানে __()
নিয়ে যায় ।translate()
'gettext'
আপনার সমস্যাটি পরিচালনা করার জন্য দুটি উপায় রয়েছে: ১. একটি একক বিশেষায়িত ফাংশনে স্ট্রিংটিকে সম্বোধন করুন (সঠিক পাঠ্যদণ্ডের সাথে মেলে নিশ্চিত হন!) বা 2. আরও জেনেরিক পদ্ধতির ব্যবহার করুন।
@ রার্স্ট এখনই সংস্করণ 1 পোস্ট করেছেন , সুতরাং আমি সংস্করণ 2 যোগ করব। :)
<?php
/*
Plugin Name: Retranslate
Description: Adds translations.
Version: 0.1
Author: Thomas Scholz
Author URI: http://toscho.de
License: GPL v2
*/
class Toscho_Retrans {
// store the options
protected $params;
/**
* Set up basic information
*
* @param array $options
* @return void
*/
public function __construct( array $options )
{
$defaults = array (
'domain' => 'default'
, 'context' => 'backend'
, 'replacements' => array ()
, 'post_type' => array ( 'post' )
);
$this->params = array_merge( $defaults, $options );
// When to add the filter
$hook = 'backend' == $this->params['context']
? 'admin_head' : 'template_redirect';
add_action( $hook, array ( $this, 'register_filter' ) );
}
/**
* Conatiner for add_filter()
* @return void
*/
public function register_filter()
{
add_filter( 'gettext', array ( $this, 'translate' ), 10, 3 );
}
/**
* The real working code.
*
* @param string $translated
* @param string $original
* @param string $domain
* @return string
*/
public function translate( $translated, $original, $domain )
{
// exit early
if ( 'backend' == $this->params['context'] )
{
global $post_type;
if ( ! empty ( $post_type )
&& ! in_array( $post_type, $this->params['post_type'] ) )
{
return $translated;
}
}
if ( $this->params['domain'] !== $domain )
{
return $translated;
}
// Finally replace
return strtr( $original, $this->params['replacements'] );
}
}
// Sample code
// Replace 'Publish' with 'Save' and 'Preview' with 'Lurk' on pages and posts
$Toscho_Retrans = new Toscho_Retrans(
array (
'replacements' => array (
'Publish' => 'Save'
, 'Preview' => 'Lurk'
)
, 'post_type' => array ( 'page', 'post' )
)
);
প্লাগইন হিসাবে আপনার কোডটি ব্যবহার করার দরকার নেই। এটি আপনার থিমের ফাংশন.এফপি অন্তর্ভুক্ত করা যথেষ্ট হবে।
আসল সেভ বোতামটি মুছে ফেলার জন্য ('ড্রাফ্ট' বোতামটি কী তা নিশ্চিত নয়), আপনার ফাংশনগুলিতে নিম্নলিখিত কোডটি যুক্ত করুন ph php / একটি প্লাগইন:
add_action( 'admin_print_footer_scripts', 'remove_save_button' );
function remove_save_button()
{
?>
<script>
jQuery(document).ready(function($){$('#save-post').remove();});
</script><?php
}
হ্যাঁ, এটি কুরুচিপূর্ণ।
post_submit_meta_box()
এটির সামগ্রীর স্রোত কেবল বাইরে যায়। কোন ফিল্টার নেই। জাভাস্ক্রিপ্ট বা ob_start()
সমাধান করতে পারে। উভয় খুব মার্জিত না।
হ্যাক্রের অনুবাদ ফিল্টার ব্যবহারের পরামর্শের কোডটি এরকম কিছু হবে:
add_filter( 'gettext', 'change_publish_button', 10, 2 );
function change_publish_button( $translation, $text ) {
if ( $text == 'Publish' )
return 'Save';
return $translation;
}
এটি সম্পূর্ণ উত্তর নয় তবে কিছু দিকনির্দেশ: প্রদর্শিত যে কোনও পাঠ্য একটি অনুবাদ ফিল্টারকে ছাড়িয়ে গেছে এবং তাই কলব্যাক ফাংশনে (হুক) পরিবর্তিত হতে পারে। সুতরাং যদি হুকটি কেবলমাত্র সেই পৃষ্ঠাটিতে নিবন্ধিত হয় যেখানে আপনি এটি পরিবর্তন করতে চান, কাজ শেষ হয়েছে।
সিএসএসের মাধ্যমে লুকিয়ে খসড়া বোতামটি "সরানো" হতে পারে। সিএসএসকে <head>
অন্য কলব্যাকের সাহায্যে অ্যাডমিনের -ট্যাগে ইনজেকশন দেওয়া যেতে পারে । আমি মনে করি ফিল্টারটি তার admin_head
জন্য কল করা হয়েছিল। বোতামটি এখনও রয়েছে বলে এটি কোনওরকম নোংরা, উদাহরণস্বরূপ যদি কোনও ব্যবহারকারী সিএসএস বন্ধ করে দেয়।
ধারাবাহিকতার জন্য, আমি ধরে নিচ্ছি আপনি কেবলমাত্র বোতামের টেক্সটের পরিবর্তে ওয়ার্ডপ্রেস জুড়ে "প্রকাশ" এর পরিবর্তে "সংরক্ষণ করুন" ব্যবহার করতে পছন্দ করবেন।
@ রর্স্ট দ্বারা প্রদত্ত সমাধানের ভিত্তিতে, আমি কোডটি প্রসারিত করেছি যাতে এটি "প্রকাশ করুন" শব্দের অনেকগুলি (সমস্ত?) অনুবাদগুলিকে "সংরক্ষণ" এর যথাযথ প্রকরণে অনুবাদ করে।
add_filter("gettext", "translate_publish_post_status", 10, 2);
add_filter("ngettext", "translate_publish_post_status_number", 10, 5);
add_filter("ngettext_with_context", "translate_publish_post_status_number", 10, 6);
function translate_publish_post_status($translation, $text) {
switch($text) {
case "Publish": return "Save";
case "Published on: <b>%1\$s</b>": return "Saved on: <b>%1\$s</b>";
case "Publish <b>immediately</b>": return "Approve <b>immediately</b>";
case "Publish on: <b>%1\$s</b>": return "Approve on: <b>%1\$s</b>";
case "Privately Published": return "Privately Saved";
case "Published": return "Saved";
case "Save & Publish": return "Save"; //"Double-save"? :)
default: return $translation;
}
}
function translate_publish_post_status_number($translation, $single, $plural, $number, $domain) {
if($translation == "Published <span class=\"count\">(%s)</span>") {
return "Saved <span class=\"count\">(%s)</span>";
}
return $translation;
}
খসড়া বোতামটি অপসারণের জন্য, @ টসচোর দেওয়া উত্তরে একটি ভাল সমাধান রয়েছে।
%1$s
থেকে %1\$s
। অথবা, বিজ্ঞপ্তি / সতর্কতা বন্ধ করে দেওয়া এই ত্রুটিগুলি আড়াল করবে।
আপনি কেবল jQuery এর মাধ্যমে বোতামটি খুঁজে পেতে এবং অন্য কোনও কিছুর জন্য পাঠ্য নোডটি স্যুপ করতে পারেন। এটি করতে এক টুকরো পিঠা হবে।