Apakah ada cara untuk mengubah teks tombol publikasikan pada jenis posting kustom untuk mengatakan beberapa berbeda? Misalnya, Simpan alih-alih Terbitkan. Dan juga hapus tombol draft?
sumber
Apakah ada cara untuk mengubah teks tombol publikasikan pada jenis posting kustom untuk mengatakan beberapa berbeda? Misalnya, Simpan alih-alih Terbitkan. Dan juga hapus tombol draft?
Jika Anda melihat ke dalam /wp-admin/edit-form-advanced.php
, Anda akan menemukan kotak meta:
add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core');
Perhatikan __('Publish')
- fungsi __()
mengarah ke translate()
tempat Anda mendapatkan filter'gettext'
.
Ada dua cara untuk menangani masalah Anda: 1. Alamat string dalam satu fungsi khusus (pastikan untuk mencocokkan domain teks yang benar!) Atau 2. gunakan pendekatan yang lebih umum.
@Rarst baru saja memposting versi 1, jadi saya akan menambahkan versi 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' )
)
);
Anda tidak perlu menggunakan kode sebagai plugin. Menyertakannya di functions.php tema Anda akan cukup.
Untuk menghapus tombol Simpan asli (tidak yakin apa tombol 'draft' itu), tambahkan kode berikut ke plugin functions.php / a Anda:
add_action( 'admin_print_footer_scripts', 'remove_save_button' );
function remove_save_button()
{
?>
<script>
jQuery(document).ready(function($){$('#save-post').remove();});
</script><?php
}
Ya, itu jelek.
post_submit_meta_box()
hanya membuang isinya. Tidak ada filter sama sekali. Javascript atauob_start()
bisa menyelesaikannya. Keduanya tidak terlalu elegan.Kode untuk saran hakre untuk menggunakan filter terjemahan adalah seperti ini:
sumber
Ini bukan jawaban lengkap tetapi beberapa petunjuk: Teks apa pun yang ditampilkan melampaui filter terjemahan dan karenanya dapat diubah dalam fungsi panggilan balik (pengait). Jadi, jika kait hanya terdaftar pada halaman di mana Anda ingin mengubahnya, pekerjaan sudah selesai.
Tombol konsep dapat "dihapus" dengan menyembunyikannya melalui CSS. CSS dapat disuntikkan ke
<head>
-tag admin dengan panggilan balik lain. Saya pikir filter dipanggiladmin_head
untuk itu. Entah bagaimana kotor karena tombol masih ada di sana, misalnya jika pengguna mematikan CSS.sumber
Untuk konsistensi, saya berasumsi Anda lebih suka menggunakan "Simpan" daripada "Terbitkan" di seluruh Wordpress daripada hanya pada teks tombol.
Berdasarkan solusi yang disediakan oleh @Rarst, saya memperluas kode sehingga menerjemahkan banyak (semua?) Contoh lain dari kata "Terbitkan" ke variasi yang sesuai dari "Simpan".
Untuk menghapus tombol Draft, jawaban yang diberikan oleh @toscho berisi solusi yang baik.
sumber
%1$s
menjadi%1\$s
. Atau, mematikan pemberitahuan / peringatan akan menyembunyikan kesalahan ini.Pendekatan lain akan membatalkan registrasi metabox, kemudian mendaftar ulang kotak yang sama dengan nilai yang berbeda, yaitu teks yang dipublikasi ..
Lihat diskusi yang saya lakukan di sini mengenai pemindahan kotak meta, Anda seharusnya dapat menerapkan sesuatu yang mirip dengan mengganti nama teks yang Diterbitkan itu.
sumber
Anda bisa menemukan tombolnya melalui jQuery dan menukar simpul teks dengan yang lain. Itu akan menjadi sepotong kue untuk dilakukan.
sumber
Solusi yang jauh lebih bersih & mudah.
sumber