是否修改WP_LIST_TABLE分页“项目”文本?

时间:2019-05-29 作者:Josh Jones

我正在开发一个插件,在WP仪表板的页面上创建几个自定义表。我的问题是,是否有可能(在不修改核心文件的情况下)更改这些表上方分页中显示的文本?具体来说,我想更改“项/项”一词,以反映表中显示的对象类型。

enter image description here

我已经查看了定义WP\\u List\\u Table类的核心文件,以查看该方法在何处定义该文本,但在扩展该类并传递分页参数时,似乎无法传递任何参数来修改它。。。

下面是定义上图中显示的文本的代码的确切部分:

$output = \'<span class="displaying-num">\' . sprintf( _n( \'%s item\', \'%s items\', $total_items ), number_format_i18n( $total_items ) ) . \'</span>\';
下面是上下文引用的完整方法。。。

/**
 * Display the pagination.
 *
 * @since 3.1.0
 *
 * @param string $which
 */
protected function pagination( $which ) {
  if ( empty( $this->_pagination_args ) ) {
    return;
  }

  $total_items     = $this->_pagination_args[\'total_items\'];
  $total_pages     = $this->_pagination_args[\'total_pages\'];
  $infinite_scroll = false;
  if ( isset( $this->_pagination_args[\'infinite_scroll\'] ) ) {
    $infinite_scroll = $this->_pagination_args[\'infinite_scroll\'];
  }

  if ( \'top\' === $which && $total_pages > 1 ) {
    $this->screen->render_screen_reader_content( \'heading_pagination\' );
  }

  $output = \'<span class="displaying-num">\' . sprintf( _n( \'%s item\', \'%s items\', $total_items ), number_format_i18n( $total_items ) ) . \'</span>\';

  $current = $this->get_pagenum();
  $removable_query_args = wp_removable_query_args();

  $current_url = set_url_scheme( \'http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] );

  $current_url = remove_query_arg( $removable_query_args, $current_url );

  $page_links = array();

  $total_pages_before = \'<span class="paging-input">\';
  $total_pages_after  = \'</span></span>\';

  $disable_first = $disable_last = $disable_prev = $disable_next = false;

  if ( $current == 1 ) {
    $disable_first = true;
    $disable_prev  = true;
  }
  if ( $current == 2 ) {
    $disable_first = true;
  }
  if ( $current == $total_pages ) {
    $disable_last = true;
    $disable_next = true;
  }
  if ( $current == $total_pages - 1 ) {
    $disable_last = true;
  }

  if ( $disable_first ) {
    $page_links[] = \'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&laquo;</span>\';
  } else {
    $page_links[] = sprintf(
      "<a class=\'first-page button\' href=\'%s\'><span class=\'screen-reader-text\'>%s</span><span aria-hidden=\'true\'>%s</span></a>",
      esc_url( remove_query_arg( \'paged\', $current_url ) ),
      __( \'First page\' ),
      \'&laquo;\'
    );
  }

  if ( $disable_prev ) {
    $page_links[] = \'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&lsaquo;</span>\';
  } else {
    $page_links[] = sprintf(
      "<a class=\'prev-page button\' href=\'%s\'><span class=\'screen-reader-text\'>%s</span><span aria-hidden=\'true\'>%s</span></a>",
      esc_url( add_query_arg( \'paged\', max( 1, $current - 1 ), $current_url ) ),
      __( \'Previous page\' ),
      \'&lsaquo;\'
    );
  }

  if ( \'bottom\' === $which ) {
    $html_current_page  = $current;
    $total_pages_before = \'<span class="screen-reader-text">\' . __( \'Current Page\' ) . \'</span><span id="table-paging" class="paging-input"><span class="tablenav-paging-text">\';
  } else {
    $html_current_page = sprintf(
      "%s<input class=\'current-page\' id=\'current-page-selector\' type=\'text\' name=\'paged\' value=\'%s\' size=\'%d\' aria-describedby=\'table-paging\' /><span class=\'tablenav-paging-text\'>",
      \'<label for="current-page-selector" class="screen-reader-text">\' . __( \'Current Page\' ) . \'</label>\',
      $current,
      strlen( $total_pages )
    );
  }
  $html_total_pages = sprintf( "<span class=\'total-pages\'>%s</span>", number_format_i18n( $total_pages ) );
  $page_links[]     = $total_pages_before . sprintf( _x( \'%1$s of %2$s\', \'paging\' ), $html_current_page, $html_total_pages ) . $total_pages_after;

  if ( $disable_next ) {
    $page_links[] = \'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&rsaquo;</span>\';
  } else {
    $page_links[] = sprintf(
      "<a class=\'next-page button\' href=\'%s\'><span class=\'screen-reader-text\'>%s</span><span aria-hidden=\'true\'>%s</span></a>",
      esc_url( add_query_arg( \'paged\', min( $total_pages, $current + 1 ), $current_url ) ),
      __( \'Next page\' ),
      \'&rsaquo;\'
    );
  }

  if ( $disable_last ) {
    $page_links[] = \'<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&raquo;</span>\';
  } else {
    $page_links[] = sprintf(
      "<a class=\'last-page button\' href=\'%s\'><span class=\'screen-reader-text\'>%s</span><span aria-hidden=\'true\'>%s</span></a>",
      esc_url( add_query_arg( \'paged\', $total_pages, $current_url ) ),
      __( \'Last page\' ),
      \'&raquo;\'
    );
  }

  $pagination_links_class = \'pagination-links\';
  if ( ! empty( $infinite_scroll ) ) {
    $pagination_links_class .= \' hide-if-js\';
  }
  $output .= "\\n<span class=\'$pagination_links_class\'>" . join( "\\n", $page_links ) . \'</span>\';

  if ( $total_pages ) {
    $page_class = $total_pages < 2 ? \' one-page\' : \'\';
  } else {
    $page_class = \' no-pages\';
  }
  $this->_pagination = "<div class=\'tablenav-pages{$page_class}\'>$output</div>";

  echo $this->_pagination;
}

1 个回复
SO网友:Josh Jones

所以我只是将分页方法复制到我的类中,并更改其中的措辞。我本以为WP会有一个更优雅的解决方案,但显然不是。

相关推荐

Show pagination in WP_Query

我正在编写一个foodblog,并试图在特定页面中显示收藏夹帖子列表,但我对分页有一些问题。我在前面的问题中尝试了不同的解决方案,但都没有解决问题。非常感谢 <?php $my_favs = get_user_meta(get_current_user_id(), \'user_favs\', true); $args = array( \'post_type\' => array(\'recipe\', \'post