"게시 제목" 아래에서 사용자 지정 열 관리 링크 이동
편집, 제거, 보기 등을 추가하는 방법을 알 수 없는 것 같습니다.워드프레스 뒷단에 있는 사용자 지정 칼럼 중 하나에 저장됩니다.이 아이디어는 제목 위를 맴돌 때 제목에 첨부되는 링크를 다른 열에 첨부하도록 하는 것입니다.
아래 코드에서 출력하는 내용입니다.
이 스크린샷의 제목 위에 마우스를 올려 놓으면 모든 편집 링크가 있는 것처럼, 작성자 열의 링크가 작성자 위에 마우스를 올려 놓았으면 합니다.
이것이 지금까지 제가 가진 것입니다.
add_filter( 'manage_edit-testimonial-quotes_columns', 'view_columns' ) ;
function view_columns( $columns ) {
$columns = array(
'cb' => '',
'date' => __( 'Date' ),
'tq_author' => __( 'Author' ),
'tq_quote' => __( 'Testimonial' ),
);
return $columns;
}
add_action('manage_testimonial-quotes_posts_custom_column', 'custom_view_columns', 10, 2);
function custom_view_columns($column, $post_id){
global $post;
switch ($column){
case 'tq_author':
echo '<a href="post.php?post=' . $post->ID . '&action=edit">';
$column_content = the_field('tq_author');
echo $column_content;
echo '</a>';
break;
case 'tq_quote':
$column_content = the_field('tq_quote');
echo $column_content;
break;
default:
break;
}
}
WP 4.3.0 이후로 가장 좋은 방법은 다음과 같습니다.
add_filter( 'list_table_primary_column', [ $this, 'list_table_primary_column' ], 10, 2 );
public function list_table_primary_column( $default, $screen ) {
if ( 'edit-yourpostype' === $screen ) {
$default = 'yourcolumn';
}
return $default;
}
그 문제를 해결할 수 있는 실마리가 있을지 정말 의심스럽습니다.그럼 핵심도 확인하지 않고 더러운 해결책으로 바로 가보겠습니다.
add_action( 'admin_head-edit.php', 'so_13418722_move_quick_edit_links' );
function so_13418722_move_quick_edit_links()
{
global $current_screen;
if( 'post' != $current_screen->post_type )
return;
if( current_user_can( 'delete_plugins' ) )
{
?>
<script type="text/javascript">
function so_13418722_doMove()
{
jQuery('td.post-title.page-title.column-title div.row-actions').each(function() {
var $list = jQuery(this);
var $firstChecked = $list.parent().parent().find('td.author.column-author');
if ( !$firstChecked.html() )
return;
$list.appendTo($firstChecked);
});
}
jQuery(document).ready(function ($){
so_13418722_doMove();
});
</script>
<?php
}
}
결과:
참고:
- post_type 조정:
'post' != $current_screen->post_type
- 열 클래스를 조정합니다.
find('td.author.column-author')
버그 및 솔루션:
업데이트 후 빠른 편집 메뉴는 원래 위치로 돌아갑니다.다음의 AJAX 가로채기가 이를 다룹니다.자세한 내용은 이 WordPress Developers 답변을 참조하십시오.
add_action( 'wp_ajax_inline-save', 'so_13418722_ajax_inline_save' , 0 );
/**
Copy of the function wp_ajax_inline_save()
http://core.trac.wordpress.org/browser/tags/3.4.2/wp-admin/includes/ajax-actions.php#L1315
Only Modification marked at the end of the function with INTERCEPT
*/
function so_13418722_ajax_inline_save()
{
global $wp_list_table;
check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) )
wp_die();
if ( 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_ID ) )
wp_die( __( 'You are not allowed to edit this page.' ) );
} else {
if ( ! current_user_can( 'edit_post', $post_ID ) )
wp_die( __( 'You are not allowed to edit this post.' ) );
}
set_current_screen( $_POST['screen'] );
if ( $last = wp_check_post_lock( $post_ID ) ) {
$last_user = get_userdata( $last );
$last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) );
wp_die();
}
$data = &$_POST;
$post = get_post( $post_ID, ARRAY_A );
$post = add_magic_quotes($post); //since it is from db
$data['content'] = $post['post_content'];
$data['excerpt'] = $post['post_excerpt'];
// rename
$data['user_ID'] = $GLOBALS['user_ID'];
if ( isset($data['post_parent']) )
$data['parent_id'] = $data['post_parent'];
// status
if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
$data['post_status'] = 'private';
else
$data['post_status'] = $data['_status'];
if ( empty($data['comment_status']) )
$data['comment_status'] = 'closed';
if ( empty($data['ping_status']) )
$data['ping_status'] = 'closed';
// update the post
edit_post();
$wp_list_table = _get_list_table('WP_Posts_List_Table');
$mode = $_POST['post_view'];
$wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) );
// INTERCEPT: Check if it is our post_type, if not, do nothing
if( 'post' == $_POST['post_type'] )
{
?>
<script type="text/javascript">so_13418722_doMove();</script>
<?php
}
// end INTERCEPT
wp_die();
}
저도 같은 욕구가 있었습니다.
Nicola의 솔루션은 "정의되지 않은 변수" 알림/오류를 받은 것을 제외하고는 효과가 있었습니다.그런 다음 매개 변수가 "[$this...]" 부분이 없어야 한다는 것을 깨달았습니다.
제 생각에 그것은 문서에서 복사/붙여 붙인 것 같습니다.
그래서 효과가 있었습니다.
add_filter( 'list_table_primary_column', 'list_table_primary_column', 10, 2 );
function list_table_primary_column( $default, $screen ) {
if ( 'edit-your_post_type' === $screen ) {
// Set default columns to Minutes Spent.
$default = 'your_column';
}
return $default;
}
당신의_열이 무엇인지 모르시면 해당 열의 제목을 확인하고 아이디를 가져오시면 됩니다.
승인된 답변처럼 JS에 의존하지 않고는 동작 자체를 이동할 수 없습니다.그러나 php와 내장된 워드프레스 기능으로 당신만의 액션 팝업 버전을 매우 쉽게 만들 수 있습니다.이 버전은 사용자가 JS를 끄더라도 작동합니다.
스위치를 사용하여 사용자 지정 열을 채운다고 가정할 때, 자신의 기능에 적응하지 못할 경우 다음과 같은 작업을 수행합니다.
switch ( $column ) {
case 'your_column_name':
echo "Your custom content here";
my_custom_column_actions($post_id);
break;
}
그런 다음 작업 팝업을 재생성하는 별도의 기능이 있습니다.
function my_custom_column_actions($post_id) {
if($_GET['post_status']!='trash') :
$bare_url = "/wp-admin/post.php?post=$post_id&action=trash";
$nonce_url = wp_nonce_url( $bare_url, 'trash-post_'.$post_id );
echo " <div class='row-actions'>
<span class='edit'>
<a href='/wp-admin/post.php?post=$post_id&action=edit'>Edit</a> |
</span>
<span class='trash'>
<a href='$nonce_url' class='submitdelete'>Trash</a>
</span>
<span class='edit'>
<a href='".get_the_permalink($post_id)."'>View</a> |
</span>
</div>";
else:
$bare_url = "/wp-admin/post.php?post=$post_id&action=untrash";
$nonce_url = wp_nonce_url( $bare_url, 'untrash-post_'.$post_id );
$delete_url = "/wp-admin/post.php?post=$post_id&action=delete";
$nonce_delete_url = wp_nonce_url( $delete_url, 'delete-post_'.$post_id );
echo " <div class='row-actions'>
<span class='untrash'>
<a href='$nonce_url' class='untrash'>Restore</a> |
</span>
<span class='delete'>
<a href='$nonce_delete_url' class='submitdelete'>Delete Permanently</a>
</span>
</div>";
endif;
}
의 모든 비즈니스nonce_url
s는 추적, 복원 또는 삭제에 중요합니다. 이 작업이 없으면 작동하지 않습니다.
작성자 또는 게시된 날짜와 같이 일반적으로 나타나는 열에 이 내용을 포함시키려면 사용자 지정 열을 선언할 때 표준 열을 포함하지 않고 동일한 데이터를 가져오는 사용자 지정 열을 포함해야 합니다(그리고 위 함수에 대한 호출).
제목을 포함시키되 그 아래에 액션이 나타나지 않는 경우에도 마찬가지입니다. 그렇지 않으면 작업이 두 번 나타납니다.않음title
column(열) 대신 제목을 잡고 새 함수가 아닌 사용자 정의 column(열에 포함합니다.
또한 기능이 반향하는 내용을 편집하기만 하면 자신의 작업을 매우 쉽게 추가할 수 있습니다.
언급URL : https://stackoverflow.com/questions/13418722/move-custom-column-admin-links-from-below-post-title
'code' 카테고리의 다른 글
Oracle - 인덱스를 만들거나 열을 추가한 후 통계를 계산해야 합니까? (0) | 2023.10.15 |
---|---|
포인터를 리터럴(또는 상수) 문자 배열( 문자열)로 되돌리기? (0) | 2023.10.15 |
한 요소의 모든 속성을 복사하여 다른 요소에 적용하는 방법은? (0) | 2023.10.15 |
업데이트된 도커 이미지를 Amazon ECS 작업에 배포하려면 어떻게 해야 합니까? (0) | 2023.10.15 |
jQuery/Javascript에서 변수를 regex로 전달하는 방법 (0) | 2023.10.15 |