WP_Posts_List_Table::handle_row_actions() – Generates and displays row action links.

You appear to be a bot. Output may be restricted

Description

Generates and displays row action links.

Usage

$string = WP_Posts_List_Table::handle_row_actions( $item, $column_name, $primary );

Parameters

$item
( WP_Post ) required – Post being acted upon.
$column_name
( string ) required – Current column name.
$primary
( string ) required – Primary column name.

Returns

string Row actions output for posts, or an empty string if the current column is not the primary column.

Source

File name: wordpress/wp-admin/includes/class-wp-posts-list-table.php
Lines:

1 to 100 of 128
  protected function handle_row_actions( $item, $column_name, $primary ) {
    if ( $primary !== $column_name ) {
      return '';
    }

    // Restores the more descriptive, specific name for use within this method.
    $post             = $item;
    $post_type_object = get_post_type_object( $post->post_type );
    $can_edit_post    = current_user_can( 'edit_post', $post->ID );
    $actions          = array();
    $title            = _draft_or_post_title();

    if ( $can_edit_post && 'trash' !== $post->post_status ) {
      $actions['edit'] = sprintf(
        '<a href="%s" aria-label="%s">%s</a>',
        get_edit_post_link( $post->ID ),
        /* translators: %s: Post title. */
        esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ),
        __( 'Edit' )
      );

      if ( 'wp_block' !== $post->post_type ) {
        $actions['inline hide-if-no-js'] = sprintf(
          '<button type="button" class="button-link editinline" aria-label="%s" aria-expanded="false">%s</button>',
          /* translators: %s: Post title. */
          esc_attr( sprintf( __( 'Quick edit &#8220;%s&#8221; inline' ), $title ) ),
          __( 'Quick&nbsp;Edit' )
        );
      }
    }

    if ( current_user_can( 'delete_post', $post->ID ) ) {
      if ( 'trash' === $post->post_status ) {
        $actions['untrash'] = sprintf(
          '<a href="%s" aria-label="%s">%s</a>',
          wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ),
          /* translators: %s: Post title. */
          esc_attr( sprintf( __( 'Restore &#8220;%s&#8221; from the Trash' ), $title ) ),
          __( 'Restore' )
        );
      } elseif ( EMPTY_TRASH_DAYS ) {
        $actions['trash'] = sprintf(
          '<a href="%s" class="submitdelete" aria-label="%s">%s</a>',
          get_delete_post_link( $post->ID ),
          /* translators: %s: Post title. */
          esc_attr( sprintf( __( 'Move &#8220;%s&#8221; to the Trash' ), $title ) ),
          _x( 'Trash', 'verb' )
        );
      }

      if ( 'trash' === $post->post_status || ! EMPTY_TRASH_DAYS ) {
        $actions['delete'] = sprintf(
          '<a href="%s" class="submitdelete" aria-label="%s">%s</a>',
          get_delete_post_link( $post->ID, '', true ),
          /* translators: %s: Post title. */
          esc_attr( sprintf( __( 'Delete &#8220;%s&#8221; permanently' ), $title ) ),
          __( 'Delete Permanently' )
        );
      }
    }

    if ( is_post_type_viewable( $post_type_object ) ) {
      if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ), true ) ) {
        if ( $can_edit_post ) {
          $preview_link    = get_preview_post_link( $post );
          $actions['view'] = sprintf(
            '<a href="%s" rel="bookmark" aria-label="%s">%s</a>',
            esc_url( $preview_link ),
            /* translators: %s: Post title. */
            esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ),
            __( 'Preview' )
          );
        }
      } elseif ( 'trash' !== $post->post_status ) {
        $actions['view'] = sprintf(
          '<a href="%s" rel="bookmark" aria-label="%s">%s</a>',
          get_permalink( $post->ID ),
          /* translators: %s: Post title. */
          esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ),
          __( 'View' )
        );
      }
    }

    if ( 'wp_block' === $post->post_type ) {
      $actions['export'] = sprintf(
        '<button type="button" class="wp-list-reusable-blocks__export button-link" data-id="%s" aria-label="%s">%s</button>',
        $post->ID,
        /* translators: %s: Post title. */
        esc_attr( sprintf( __( 'Export &#8220;%s&#8221; as JSON' ), $title ) ),
        __( 'Export as JSON' )
      );
    }

    if ( is_post_type_hierarchical( $post->post_type ) ) {

      
/**
 * Filters the array of row action links on the Pages list table.
 *
 * The filter is evaluated only for hierarchical post types.
 

 View on GitHub View on Trac