Rename a slug label

时间:2019-07-25 作者:WongKongPhooey

在我的自定义帖子类型中,有一个自定义分类法,它具有常用的标题、Slug和Description字段。

我希望最终用户不理解slug的用途,在我的情况下,它需要是一个语言代码,例如en\\u GB,所以我只想将slug标签重命名为“语言代码”。

太长,读不下去了我可以重命名自定义分类法的slug标签吗?

1 个回复
最合适的回答,由SO网友:ChristopherJones 整理而成

正如SallyCJ所提到的,gettext 是你唯一的选择,因为Slug 标签是在WordPress的核心中硬编码的。

https://core.trac.wordpress.org/browser/tags/5.2/src/wp-admin/edit-tags.php#L439

这是我编写和测试的一个片段,应该对您有用,它将只在后端运行,并且只在您将看到并希望更改的两个页面上运行Slug:

add_action(\'current_screen\', \'current_screen_callback\');

function current_screen_callback($screen) {

  // Put some checks and balances in place to only replace where and when we need to
  if(
    is_object($screen) &&
    ($screen->base===\'edit-tags\' || $screen->base===\'term\') &&
    $screen->taxonomy===\'custom_tax_slug\'){
        add_filter( \'gettext\', \'change_out_slug_labels\', 99, 3 );
  }
}

function change_out_slug_labels($translated_text, $untranslated_text, $domain){

  if(stripos( $untranslated_text, \'slug\' )!== FALSE ){
      $translated_text = str_ireplace(\'Slug\', \'Language Code\', $untranslated_text);
  }

  return $translated_text;
}
current_screen 是一个只支持管理的钩子,因此交换所需内容的调用只在后端调用。我接受了change_out_slug_labels() 功能输出,以便在需要时可以在前端使用它。

我希望这有帮助!!!

相关推荐

List posts with slug title

代码用于single-product.php. 我可以在页面上列出所有产品,但我想列出所有带有slug标题的帖子。<?php $args= array( \'post_type\' => \'products\', \'order_by\' => \'date\', \'posts_per_page\' => -1, \'post__not_in\' => array( get_