WordPress.org

Make WordPress Core

Ticket #29881: 29881.4.diff

File 29881.4.diff, 31.8 KB (added by wonderboymusic, 5 years ago)
  • src/wp-admin/includes/class-wp-comments-list-table.php

     
    462462        protected function handle_row_actions( $comment, $column_name, $primary ) {
    463463                global $comment_status;
    464464
     465                if ( $primary !== $column_name ) {
     466                        return '';
     467                }
     468
    465469                if ( ! $this->user_can ) {
    466470                        return;
    467471                }
    468472
    469                 if ( $primary !== $column_name ) {
    470                         return '';
    471                 }
    472 
    473473                $post = get_post();
    474474
    475475                $the_comment_status = wp_get_comment_status( $comment->comment_ID );
  • src/wp-admin/includes/class-wp-links-list-table.php

     
    310310         * @return string Row action output for links.
    311311         */
    312312        protected function handle_row_actions( $link, $column_name, $primary ) {
    313                 if ( $primary === $column_name ) {
    314                         $edit_link = get_edit_bookmark_link( $link );
     313                if ( $primary !== $column_name ) {
     314                        return '';
     315                }
    315316
    316                         $actions = array();
    317                         $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
    318                         $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id) . "' onclick=\"if ( confirm( '" . esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name)) . "' ) ) { return true;}return false;\">" . __('Delete') . "</a>";
    319                         return $this->row_actions($actions);
    320                 }
     317                $edit_link = get_edit_bookmark_link( $link );
     318
     319                $actions = array();
     320                $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
     321                $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id) . "' onclick=\"if ( confirm( '" . esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name)) . "' ) ) { return true;}return false;\">" . __('Delete') . "</a>";
     322                return $this->row_actions( $actions );
    321323        }
    322324}
  • src/wp-admin/includes/class-wp-list-table.php

     
    12181218                                echo '<th scope="row" class="check-column">';
    12191219                                echo $this->column_cb( $item );
    12201220                                echo '</th>';
    1221                         }
    1222                         elseif ( method_exists( $this, 'column_' . $column_name ) ) {
     1221                        } elseif ( method_exists( $this, '_column_' . $column_name ) ) {
     1222                                echo call_user_func(
     1223                                        array( $this, '_column_' . $column_name ),
     1224                                        $item,
     1225                                        $classes,
     1226                                        $data,
     1227                                        $primary
     1228                                );
     1229                        } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
    12231230                                echo "<td $attributes>";
    12241231                                echo call_user_func( array( $this, 'column_' . $column_name ), $item );
    12251232                                echo $this->handle_row_actions( $item, $column_name, $primary );
    12261233                                echo "</td>";
    1227                         }
    1228                         else {
     1234                        } else {
    12291235                                echo "<td $attributes>";
    12301236                                echo $this->column_default( $item, $column_name );
    12311237                                echo $this->handle_row_actions( $item, $column_name, $primary );
  • src/wp-admin/includes/class-wp-media-list-table.php

     
    657657         * @return string Row actions output for media attachments.
    658658         */
    659659        protected function handle_row_actions( $post, $column_name, $primary ) {
    660                 if ( $primary === $column_name ) {
    661                         $att_title = _draft_or_post_title();
    662                         return $this->row_actions( $this->_get_row_actions( $post, $att_title ) );
     660                if ( $primary !== $column_name ) {
     661                        return '';
    663662                }
     663
     664                $att_title = _draft_or_post_title();
     665                return $this->row_actions( $this->_get_row_actions( $post, $att_title ) );
    664666        }
    665667}
  • src/wp-admin/includes/class-wp-ms-sites-list-table.php

     
    409409        }
    410410
    411411        /**
    412          * Handles columns output for a single row.
    413412         *
    414          * @since 4.3.0
    415          * @access public
    416          *
    417          * @param array $item Current site.
    418          */
    419         public function single_row_columns( $item ) {
    420                 list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
    421 
    422                 foreach ( $columns as $column_name => $column_display_name ) {
    423                         $classes = "$column_name column-$column_name";
    424                         if ( $primary === $column_name ) {
    425                                 $classes .= ' has-row-actions column-primary';
    426                         }
    427 
    428                         if ( in_array( $column_name, $hidden ) ) {
    429                                 $classes .= ' hidden';
    430                         }
    431 
    432                         $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"';
    433 
    434                         $attributes = "class='$classes' $data";
    435 
    436                         if ( 'cb' === $column_name ) {
    437                                 echo '<th scope="row" class="check-column">';
    438 
    439                                 $this->column_cb( $item );
    440 
    441                                 echo '</th>';
    442                         } elseif ( 'id' === $column_name ) {
    443 ?>
    444                                 <th scope="row">
    445                                         <?php echo $item['blog_id'] ?>
    446                                 </th>
    447 <?php
    448                         } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
    449                                 echo "<td $attributes>";
    450 
    451                                 echo call_user_func( array( $this, 'column_' . $column_name ), $item );
    452 
    453                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    454                                 echo "</td>";
    455                         } else {
    456                                 echo "<td $attributes>";
    457 
    458                                 echo $this->column_default( $item, $column_name );
    459 
    460                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    461                                 echo "</td>";
    462                         }
    463                 }
    464         }
    465 
    466         /**
    467          *
    468413         * @global string $mode
    469414         */
    470415        public function display_rows() {
     
    510455         * @return string Row actions output.
    511456         */
    512457        protected function handle_row_actions( $blog, $column_name, $primary ) {
    513                 if ( $primary === $column_name ) {
    514                         $blogname = untrailingslashit( $blog['domain'] . $blog['path'] );
     458                if ( $primary !== $column_name ) {
     459                        return;
     460                }
    515461
    516                         // Preordered.
    517                         $actions = array(
    518                                 'edit' => '', 'backend' => '',
    519                                 'activate' => '', 'deactivate' => '',
    520                                 'archive' => '', 'unarchive' => '',
    521                                 'spam' => '', 'unspam' => '',
    522                                 'delete' => '',
    523                                 'visit' => '',
    524                         );
     462                $blogname = untrailingslashit( $blog['domain'] . $blog['path'] );
    525463
    526                         $actions['edit']        = '<span class="edit"><a href="' . esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ) . '">' . __( 'Edit' ) . '</a></span>';
    527                         $actions['backend']     = "<span class='backend'><a href='" . esc_url( get_admin_url( $blog['blog_id'] ) ) . "' class='edit'>" . __( 'Dashboard' ) . '</a></span>';
    528                         if ( get_current_site()->blog_id != $blog['blog_id'] ) {
    529                                 if ( $blog['deleted'] == '1' ) {
    530                                         $actions['activate']   = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=activateblog&amp;id=' . $blog['blog_id'] ), 'activateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Activate' ) . '</a></span>';
    531                                 } else {
    532                                         $actions['deactivate'] = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $blog['blog_id'] ), 'deactivateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Deactivate' ) . '</a></span>';
    533                                 }
     464                // Preordered.
     465                $actions = array(
     466                        'edit' => '', 'backend' => '',
     467                        'activate' => '', 'deactivate' => '',
     468                        'archive' => '', 'unarchive' => '',
     469                        'spam' => '', 'unspam' => '',
     470                        'delete' => '',
     471                        'visit' => '',
     472                );
    534473
    535                                 if ( $blog['archived'] == '1' ) {
    536                                         $actions['unarchive'] = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unarchiveblog&amp;id=' . $blog['blog_id'] ), 'unarchiveblog_' . $blog['blog_id'] ) ) . '">' . __( 'Unarchive' ) . '</a></span>';
    537                                 } else {
    538                                         $actions['archive']   = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=archiveblog&amp;id=' . $blog['blog_id'] ), 'archiveblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Archive', 'verb; site' ) . '</a></span>';
    539                                 }
     474                $actions['edit']        = '<span class="edit"><a href="' . esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ) . '">' . __( 'Edit' ) . '</a></span>';
     475                $actions['backend']     = "<span class='backend'><a href='" . esc_url( get_admin_url( $blog['blog_id'] ) ) . "' class='edit'>" . __( 'Dashboard' ) . '</a></span>';
     476                if ( get_current_site()->blog_id != $blog['blog_id'] ) {
     477                        if ( $blog['deleted'] == '1' ) {
     478                                $actions['activate']   = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=activateblog&amp;id=' . $blog['blog_id'] ), 'activateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Activate' ) . '</a></span>';
     479                        } else {
     480                                $actions['deactivate'] = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $blog['blog_id'] ), 'deactivateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Deactivate' ) . '</a></span>';
     481                        }
    540482
    541                                 if ( $blog['spam'] == '1' ) {
    542                                         $actions['unspam'] = '<span class="spam"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unspamblog&amp;id=' . $blog['blog_id'] ), 'unspamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Not Spam', 'site' ) . '</a></span>';
    543                                 } else {
    544                                         $actions['spam']   = '<span class="spam"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=spamblog&amp;id=' . $blog['blog_id'] ), 'spamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Spam', 'site' ) . '</a></span>';
    545                                 }
     483                        if ( $blog['archived'] == '1' ) {
     484                                $actions['unarchive'] = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unarchiveblog&amp;id=' . $blog['blog_id'] ), 'unarchiveblog_' . $blog['blog_id'] ) ) . '">' . __( 'Unarchive' ) . '</a></span>';
     485                        } else {
     486                                $actions['archive']   = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=archiveblog&amp;id=' . $blog['blog_id'] ), 'archiveblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Archive', 'verb; site' ) . '</a></span>';
     487                        }
    546488
    547                                 if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) {
    548                                         $actions['delete'] = '<span class="delete"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deleteblog&amp;id=' . $blog['blog_id'] ), 'deleteblog_' . $blog['blog_id'] ) ) . '">' . __( 'Delete' ) . '</a></span>';
    549                                 }
     489                        if ( $blog['spam'] == '1' ) {
     490                                $actions['unspam'] = '<span class="spam"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unspamblog&amp;id=' . $blog['blog_id'] ), 'unspamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Not Spam', 'site' ) . '</a></span>';
     491                        } else {
     492                                $actions['spam']   = '<span class="spam"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=spamblog&amp;id=' . $blog['blog_id'] ), 'spamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Spam', 'site' ) . '</a></span>';
    550493                        }
    551494
    552                         $actions['visit']       = "<span class='view'><a href='" . esc_url( get_home_url( $blog['blog_id'], '/' ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a></span>';
     495                        if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) {
     496                                $actions['delete'] = '<span class="delete"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deleteblog&amp;id=' . $blog['blog_id'] ), 'deleteblog_' . $blog['blog_id'] ) ) . '">' . __( 'Delete' ) . '</a></span>';
     497                        }
     498                }
    553499
    554                         /**
    555                          * Filter the action links displayed for each site in the Sites list table.
    556                          *
    557                          * The 'Edit', 'Dashboard', 'Delete', and 'Visit' links are displayed by
    558                          * default for each site. The site's status determines whether to show the
    559                          * 'Activate' or 'Deactivate' link, 'Unarchive' or 'Archive' links, and
    560                          * 'Not Spam' or 'Spam' link for each site.
    561                          *
    562                          * @since 3.1.0
    563                          *
    564                          * @param array  $actions  An array of action links to be displayed.
    565                          * @param int    $blog_id  The site ID.
    566                          * @param string $blogname Site path, formatted depending on whether it is a sub-domain
    567                          *                         or subdirectory multisite install.
    568                          */
    569                         $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname );
    570                         return $this->row_actions( $actions );
    571                 }
     500                $actions['visit']       = "<span class='view'><a href='" . esc_url( get_home_url( $blog['blog_id'], '/' ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a></span>';
     501
     502                /**
     503                 * Filter the action links displayed for each site in the Sites list table.
     504                 *
     505                 * The 'Edit', 'Dashboard', 'Delete', and 'Visit' links are displayed by
     506                 * default for each site. The site's status determines whether to show the
     507                 * 'Activate' or 'Deactivate' link, 'Unarchive' or 'Archive' links, and
     508                 * 'Not Spam' or 'Spam' link for each site.
     509                 *
     510                 * @since 3.1.0
     511                 *
     512                 * @param array  $actions  An array of action links to be displayed.
     513                 * @param int    $blog_id  The site ID.
     514                 * @param string $blogname Site path, formatted depending on whether it is a sub-domain
     515                 *                         or subdirectory multisite install.
     516                 */
     517                $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname );
     518                return $this->row_actions( $actions );
    572519        }
    573520}
  • src/wp-admin/includes/class-wp-ms-users-list-table.php

     
    257257        }
    258258
    259259        /**
     260         *
     261         * @param WP_User $user
     262         * @param string  $classes
     263         * @param string  $data
     264         * @param string  $primary
     265         */
     266        public function _column_blogs( $user, $classes, $data, $primary ) {
     267                echo '<td class="', $classes, ' has-row-actions" ', $data, '>';
     268                echo $this->column_blogs( $user );
     269                echo $this->handle_row_actions( $user, 'blogs', $primary );
     270                echo '</td>';
     271        }
     272
     273        /**
    260274         * Handles the blogs/sites column output.
    261275         *
    262276         * @since 4.3.0
     
    335349                echo apply_filters( 'manage_users_custom_column', '', $column_name, $user->ID );
    336350        }
    337351
    338         /**
    339          * Handles columns output for a single row in the table.
    340          *
    341          * @since 4.3.0
    342          * @access public
    343          *
    344          * @param WP_User $item The current WP_User object.
    345          */
    346         public function single_row_columns( $item ) {
    347                 list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
    348 
    349                 foreach ( $columns as $column_name => $column_display_name ) {
    350                         $classes = "$column_name column-$column_name";
    351                         if ( $primary === $column_name || 'blogs' === $column_name ) {
    352                                 $classes .= ' has-row-actions';
    353                         }
    354 
    355                         if ( $primary === $column_name ) {
    356                                 $classes .= ' column-primary';
    357                         }
    358 
    359                         if ( in_array( $column_name, $hidden ) ) {
    360                                 $classes .= ' hidden';
    361                         }
    362 
    363                         $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"';
    364 
    365                         $attributes = "class='$classes' $data";
    366 
    367                         if ( 'cb' === $column_name ) {
    368                                 echo '<th scope="row" class="check-column">';
    369 
    370                                 $this->column_cb( $item );
    371 
    372                                 echo '</th>';
    373                         } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
    374                                 echo "<td $attributes>";
    375 
    376                                 call_user_func( array( $this, 'column_' . $column_name ), $item );
    377 
    378                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    379                                 echo "</td>";
    380                         } else {
    381                                 echo "<td $attributes>";
    382 
    383                                 $this->column_default( $item, $column_name );
    384 
    385                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    386                                 echo "</td>";
    387                         }
    388                 }
    389         }
    390 
    391352        public function display_rows() {
    392353                foreach ( $this->items as $user ) {
    393354                        $class = '';
     
    432393         * @return string Row actions output for users in Multisite.
    433394         */
    434395        protected function handle_row_actions( $user, $column_name, $primary ) {
     396                if ( $primary !== $column_name ) {
     397                        return '';
     398                }
     399
    435400                $super_admins = get_super_admins();
    436401                $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) );
    437402
    438                 if ( $primary === $column_name ) {
    439                         $actions = array();
    440                         $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
     403                $actions = array();
     404                $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
    441405
    442                         if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) {
    443                                 $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
    444                         }
     406                if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) {
     407                        $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
     408                }
    445409
    446                         /**
    447                          * Filter the action links displayed under each user in the Network Admin Users list table.
    448                          *
    449                          * @since 3.2.0
    450                          *
    451                          * @param array   $actions An array of action links to be displayed.
    452                          *                         Default 'Edit', 'Delete'.
    453                          * @param WP_User $user    WP_User object.
    454                          */
    455                         $actions = apply_filters( 'ms_user_row_actions', $actions, $user );
    456                         return $this->row_actions( $actions );
    457                 }
     410                /**
     411                 * Filter the action links displayed under each user in the Network Admin Users list table.
     412                 *
     413                 * @since 3.2.0
     414                 *
     415                 * @param array   $actions An array of action links to be displayed.
     416                 *                         Default 'Edit', 'Delete'.
     417                 * @param WP_User $user    WP_User object.
     418                 */
     419                $actions = apply_filters( 'ms_user_row_actions', $actions, $user );
     420                return $this->row_actions( $actions );
    458421        }
    459422}
  • src/wp-admin/includes/class-wp-posts-list-table.php

     
    698698        }
    699699
    700700        /**
     701         * @since 4.3.0
     702         * @access protected
     703         *
     704         * @param WP_Post $post
     705         * @param string  $classes
     706         */
     707        protected function _column_title( $post, $classes ) {
     708                echo '<td class="' . $classes . ' page-title">';
     709                echo $this->column_title( $post );
     710                echo $this->handle_row_actions( $post, 'title', 'title' );
     711                echo '</td>';
     712        }
     713
     714        /**
    701715         * Handles the title column output.
    702716         *
    703717         * @since 4.3.0
     
    973987        }
    974988
    975989        /**
    976          * Handles columns output for a single row in the table.
    977          *
    978          * @since 4.3.0
    979          * @access public
    980          *
    981          * @param WP_Post $item The current WP_Post object.
    982          */
    983         public function single_row_columns( $item ) {
    984                 list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
    985 
    986                 foreach ( $columns as $column_name => $column_display_name ) {
    987                         $classes = "$column_name column-$column_name";
    988                         if ( $primary === $column_name ) {
    989                                 $classes .= ' has-row-actions column-primary';
    990                         }
    991 
    992                         if ( 'title' === $column_name ) {
    993                                 $classes .= ' page-title'; // Special addition for title column
    994                         }
    995 
    996                         if ( in_array( $column_name, $hidden ) ) {
    997                                 $classes .= ' hidden';
    998                         }
    999 
    1000                         // Comments column uses HTML in the display name with screen reader text.
    1001                         // Instead of using esc_attr(), we strip tags to get closer to a user-friendly string.
    1002                         $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"';
    1003 
    1004                         $attributes = "class='$classes' $data";
    1005 
    1006                         if ( 'cb' === $column_name ) {
    1007                                 echo '<th scope="row" class="check-column">';
    1008 
    1009                                 $this->column_cb( $item );
    1010 
    1011                                 echo '</th>';
    1012                         } else {
    1013                                 echo "<td $attributes>";
    1014 
    1015                                 if ( method_exists( $this, 'column_' . $column_name ) ) {
    1016                                         call_user_func( array( $this, 'column_' . $column_name ), $item );
    1017                                 } else {
    1018                                         $this->column_default( $item, $column_name );
    1019                                 }
    1020 
    1021                                 echo $this->handle_row_actions( $item, $column_name, $primary );
    1022                                 echo '</td>';
    1023                         }
    1024                 }
    1025         }
    1026 
    1027         /**
    1028990         * @global WP_Post $post
    1029991         *
    1030992         * @param int|WP_Post $post
     
    10841046         * @return string Row actions output for posts.
    10851047         */
    10861048        protected function handle_row_actions( $post, $column_name, $primary ) {
    1087                 $title = _draft_or_post_title();
     1049                if ( $primary !== $column_name ) {
     1050                        return '';
     1051                }
    10881052
    1089                 if ( $primary === $column_name ) {
    1090                         $post_type_object = get_post_type_object( $post->post_type );
    1091                         $can_edit_post = current_user_can( 'edit_post', $post->ID );
    1092                         $actions = array();
     1053                $post_type_object = get_post_type_object( $post->post_type );
     1054                $can_edit_post = current_user_can( 'edit_post', $post->ID );
     1055                $actions = array();
    10931056
    1094                         if ( $can_edit_post && 'trash' != $post->post_status ) {
    1095                                 $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID ) . '" title="' . esc_attr__( 'Edit this item' ) . '">' . __( 'Edit' ) . '</a>';
    1096                                 $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr__( 'Edit this item inline' ) . '">' . __( 'Quick&nbsp;Edit' ) . '</a>';
    1097                         }
     1057                if ( $can_edit_post && 'trash' != $post->post_status ) {
     1058                        $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID ) . '" title="' . esc_attr__( 'Edit this item' ) . '">' . __( 'Edit' ) . '</a>';
     1059                        $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr__( 'Edit this item inline' ) . '">' . __( 'Quick&nbsp;Edit' ) . '</a>';
     1060                }
    10981061
    1099                         if ( current_user_can( 'delete_post', $post->ID ) ) {
    1100                                 if ( 'trash' == $post->post_status )
    1101                                         $actions['untrash'] = "<a title='" . esc_attr__( 'Restore this item from the Trash' ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
    1102                                 elseif ( EMPTY_TRASH_DAYS )
    1103                                         $actions['trash'] = "<a class='submitdelete' title='" . esc_attr__( 'Move this item to the Trash' ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
    1104                                 if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS )
    1105                                         $actions['delete'] = "<a class='submitdelete' title='" . esc_attr__( 'Delete this item permanently' ) . "' href='" . get_delete_post_link( $post->ID, '', true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
    1106                         }
     1062                if ( current_user_can( 'delete_post', $post->ID ) ) {
     1063                        if ( 'trash' == $post->post_status )
     1064                                $actions['untrash'] = "<a title='" . esc_attr__( 'Restore this item from the Trash' ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
     1065                        elseif ( EMPTY_TRASH_DAYS )
     1066                                $actions['trash'] = "<a class='submitdelete' title='" . esc_attr__( 'Move this item to the Trash' ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
     1067                        if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS )
     1068                                $actions['delete'] = "<a class='submitdelete' title='" . esc_attr__( 'Delete this item permanently' ) . "' href='" . get_delete_post_link( $post->ID, '', true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
     1069                }
    11071070
    1108                         if ( $post_type_object->public ) {
    1109                                 if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
    1110                                         if ( $can_edit_post ) {
    1111                                                 $preview_link = set_url_scheme( get_permalink( $post->ID ) );
    1112                                                 /** This filter is documented in wp-admin/includes/meta-boxes.php */
    1113                                                 $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
    1114                                                 $actions['view'] = '<a href="' . esc_url( $preview_link ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
    1115                                         }
    1116                                 } elseif ( 'trash' != $post->post_status ) {
    1117                                         $actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
     1071                if ( $post_type_object->public ) {
     1072                        $title = _draft_or_post_title();
     1073                        if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
     1074                                if ( $can_edit_post ) {
     1075                                        $preview_link = set_url_scheme( get_permalink( $post->ID ) );
     1076                                        /** This filter is documented in wp-admin/includes/meta-boxes.php */
     1077                                        $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
     1078                                        $actions['view'] = '<a href="' . esc_url( $preview_link ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
    11181079                                }
     1080                        } elseif ( 'trash' != $post->post_status ) {
     1081                                $actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
    11191082                        }
     1083                }
    11201084
    1121                         if ( is_post_type_hierarchical( $post->post_type ) ) {
     1085                if ( is_post_type_hierarchical( $post->post_type ) ) {
    11221086
    1123                                 /**
    1124                                 * Filter the array of row action links on the Pages list table.
    1125                                 *
    1126                                 * The filter is evaluated only for hierarchical post types.
    1127                                 *
    1128                                 * @since 2.8.0
    1129                                 *
    1130                                 * @param array $actions An array of row action links. Defaults are
    1131                                 *                         'Edit', 'Quick Edit', 'Restore, 'Trash',
    1132                                 *                         'Delete Permanently', 'Preview', and 'View'.
    1133                                 * @param WP_Post $post The post object.
    1134                                 */
    1135                                 $actions = apply_filters( 'page_row_actions', $actions, $post );
    1136                         } else {
     1087                        /**
     1088                        * Filter the array of row action links on the Pages list table.
     1089                        *
     1090                        * The filter is evaluated only for hierarchical post types.
     1091                        *
     1092                        * @since 2.8.0
     1093                        *
     1094                        * @param array $actions An array of row action links. Defaults are
     1095                        *                         'Edit', 'Quick Edit', 'Restore, 'Trash',
     1096                        *                         'Delete Permanently', 'Preview', and 'View'.
     1097                        * @param WP_Post $post The post object.
     1098                        */
     1099                        $actions = apply_filters( 'page_row_actions', $actions, $post );
     1100                } else {
    11371101
    1138                                 /**
    1139                                 * Filter the array of row action links on the Posts list table.
    1140                                 *
    1141                                 * The filter is evaluated only for non-hierarchical post types.
    1142                                 *
    1143                                 * @since 2.8.0
    1144                                 *
    1145                                 * @param array $actions An array of row action links. Defaults are
    1146                                 *                         'Edit', 'Quick Edit', 'Restore, 'Trash',
    1147                                 *                         'Delete Permanently', 'Preview', and 'View'.
    1148                                 * @param WP_Post $post The post object.
    1149                                 */
    1150                                 $actions = apply_filters( 'post_row_actions', $actions, $post );
    1151                         }
     1102                        /**
     1103                        * Filter the array of row action links on the Posts list table.
     1104                        *
     1105                        * The filter is evaluated only for non-hierarchical post types.
     1106                        *
     1107                        * @since 2.8.0
     1108                        *
     1109                        * @param array $actions An array of row action links. Defaults are
     1110                        *                         'Edit', 'Quick Edit', 'Restore, 'Trash',
     1111                        *                         'Delete Permanently', 'Preview', and 'View'.
     1112                        * @param WP_Post $post The post object.
     1113                        */
     1114                        $actions = apply_filters( 'post_row_actions', $actions, $post );
     1115                }
    11521116
    1153                         return $this->row_actions( $actions );
    1154                 }
     1117                return $this->row_actions( $actions );
    11551118        }
    11561119
    11571120        /**
  • src/wp-admin/includes/class-wp-terms-list-table.php

     
    396396         * @return string Row actions output for terms.
    397397         */
    398398        protected function handle_row_actions( $tag, $column_name, $primary ) {
     399                if ( $primary !== $column_name ) {
     400                        return '';
     401                }
     402
    399403                $taxonomy = $this->screen->taxonomy;
    400404                $tax = get_taxonomy( $taxonomy );
    401405                $default_term = get_option( 'default_' . $taxonomy );
     
    402406
    403407                $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );
    404408
    405                 if ( $primary === $column_name ) {
    406                         $actions = array();
    407                         if ( current_user_can( $tax->cap->edit_terms ) ) {
    408                                 $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
    409                                 $actions['inline hide-if-no-js'] = '<a href="#" class="editinline">' . __( 'Quick&nbsp;Edit' ) . '</a>';
    410                         }
    411                         if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term )
    412                                 $actions['delete'] = "<a class='delete-tag' href='" . wp_nonce_url( "edit-tags.php?action=delete&amp;taxonomy=$taxonomy&amp;tag_ID=$tag->term_id", 'delete-tag_' . $tag->term_id ) . "'>" . __( 'Delete' ) . "</a>";
    413                         if ( $tax->public )
    414                                 $actions['view'] = '<a href="' . get_term_link( $tag ) . '">' . __( 'View' ) . '</a>';
     409                $actions = array();
     410                if ( current_user_can( $tax->cap->edit_terms ) ) {
     411                        $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
     412                        $actions['inline hide-if-no-js'] = '<a href="#" class="editinline">' . __( 'Quick&nbsp;Edit' ) . '</a>';
     413                }
     414                if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term )
     415                        $actions['delete'] = "<a class='delete-tag' href='" . wp_nonce_url( "edit-tags.php?action=delete&amp;taxonomy=$taxonomy&amp;tag_ID=$tag->term_id", 'delete-tag_' . $tag->term_id ) . "'>" . __( 'Delete' ) . "</a>";
     416                if ( $tax->public )
     417                        $actions['view'] = '<a href="' . get_term_link( $tag ) . '">' . __( 'View' ) . '</a>';
    415418
    416                         /**
    417                         * Filter the action links displayed for each term in the Tags list table.
    418                         *
    419                         * @since 2.8.0
    420                         * @deprecated 3.0.0 Use {$taxonomy}_row_actions instead.
    421                         *
    422                         * @param array  $actions An array of action links to be displayed. Default
    423                         *                        'Edit', 'Quick Edit', 'Delete', and 'View'.
    424                         * @param object $tag     Term object.
    425                         */
    426                         $actions = apply_filters( 'tag_row_actions', $actions, $tag );
     419                /**
     420                * Filter the action links displayed for each term in the Tags list table.
     421                *
     422                * @since 2.8.0
     423                * @deprecated 3.0.0 Use {$taxonomy}_row_actions instead.
     424                *
     425                * @param array  $actions An array of action links to be displayed. Default
     426                *                        'Edit', 'Quick Edit', 'Delete', and 'View'.
     427                * @param object $tag     Term object.
     428                */
     429                $actions = apply_filters( 'tag_row_actions', $actions, $tag );
    427430
    428                         /**
    429                         * Filter the action links displayed for each term in the terms list table.
    430                         *
    431                         * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
    432                         *
    433                         * @since 3.0.0
    434                         *
    435                         * @param array  $actions An array of action links to be displayed. Default
    436                         *                        'Edit', 'Quick Edit', 'Delete', and 'View'.
    437                         * @param object $tag     Term object.
    438                         */
    439                         $actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag );
     431                /**
     432                * Filter the action links displayed for each term in the terms list table.
     433                *
     434                * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
     435                *
     436                * @since 3.0.0
     437                *
     438                * @param array  $actions An array of action links to be displayed. Default
     439                *                        'Edit', 'Quick Edit', 'Delete', and 'View'.
     440                * @param object $tag     Term object.
     441                */
     442                $actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag );
    440443
    441                         return $this->row_actions( $actions );
    442                 }
     444                return $this->row_actions( $actions );
    443445        }
    444446
    445447        /**