>  기사  >  백엔드 개발  >  사용자 정의 WordPress 게시물 및 사용자 정의 게시물 유형 관리 화면의 열 표시

사용자 정의 WordPress 게시물 및 사용자 정의 게시물 유형 관리 화면의 열 표시

WBOY
WBOY원래의
2023-09-17 17:13:011183검색

이 튜토리얼에서는 WordPress 게시물 관리 화면에 새 열을 추가하는 방법을 배우며, 이 열에서는 각 게시물의 추천 이미지를 표시합니다. 이 새 열은 활성 사용자 정의 게시물 유형에 대한 관리 화면에도 추가됩니다.

1단계. 추천 이미지 활성화

이 튜토리얼에서는 활성 테마 디렉터리의 functions.php 파일을 사용합니다. 파일이 존재하지 않으면 다음 내용으로 새 파일을 생성할 수 있습니다:

으아아아

먼저 새 게시물 추가 페이지에서 해당 이미지를 사용할 수 있는지 확인하세요.

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

추천 이미지 상자가 표시되지 않으면 functions.php에 다음 줄을 추가하세요.

으아아아

add_theme_support() 函数注册对主题内指定功能的支持。传递的参数是一个字符串,指定要添加的功能。在本例中,它是 post-thumbnails. 다른 값으로는 위젯, 추천 콘텐츠, 메뉴 등이 있을 수 있습니다.

또한 추천 이미지의 미리보기를 표시하기 위해 200픽셀의 사용자 정의 크기를 설정했습니다.

으아아아

add_image_size()函数为我们注册一个新的图像尺寸,宽度为200px,高度设置为150px。我们还告诉 WordPress 使用调整大小来达到所需的大小。不过,您可以将第四个参数设置为 true 자르기를 사용합니다.


2단계. 게시물 화면에 맞춤 열 추가

이제 각 게시물의 추천 이미지를 포함하는 새 열을 게시물 목록에 추가하겠습니다. 하지만 먼저 게시물의 추천 이미지를 얻으려면 ST4_get_featured_image()라는 함수가 필요합니다.

테마 디렉토리에서 functions.php 파일을 열고 다음 콘텐츠를 추가하세요.

으아아아

우리는 get_post_thumbnail_id() 기능을 사용하여 게시물 썸네일 ID를 가져옵니다. 여기서 게시물 썸네일이라는 용어는 추천 이미지를 나타냅니다.

두 가지 함수를 정의합니다. 첫 번째는 새 열을 추가하고 두 번째는 새 열의 각 셀에 추천 이미지를 호출하여 표시합니다.

으아아아

이 두 함수는 Posts 테이블을 생성하는 WordPress 핵심 함수에 "연결"됩니다.

워드프레스 후크 정보

개발자는 WordPress API를 통해 WordPress 기본 동작을 수정할 수 있습니다.

WordPress는 플러그인이 WordPress의 나머지 부분에 "연결"되도록 하는 후크를 제공합니다. 즉, 특정 시간에 플러그인의 함수를 호출하여 플러그인을 시작할 수 있습니다.

간단히 말해서 Hooks를 사용하면 개발자는 핵심 파일을 편집하지 않고도 WordPress 기능을 확장할 수 있습니다. 후크에는 ActionFilters의 두 가지 유형이 있습니다. 둘 다 WordPress 실행 중에 시작되지만 필터는 입력을 수락, 변환 및 반환 하는 반면 작업은 아무것도 반환하지 않고 필요한 모든 것을 인쇄합니다.

우리의 경우 ST4_columns_head() 函数采用 $defaults 数组,其中包含默认的 Posts 表列(标题、类别、标签等...),向数组添加一个新的 featured_image 항목을 반환 하여 WordPress의 핵심 기능인 표 HTML 인쇄에 사용합니다.

반면, ST4_columns_content() 함수는 두 개의 변수($column_name$post_ID)를 허용하고 이를 기반으로 출력ST4_columns_content() 函数接受两个变量($column_name$post_ID),并根据它们打印输出。更准确地说,在遍历 $defaults 数组的循环的每次迭代中都会调用 ST4_columns_content() 。在每次迭代中,WordPress 都会向我们的函数传递两个参数:列名称和帖子 ID。该函数分析所有列名称,当名称等于我们在 ST4_columns_head()을 인쇄합니다. 보다 정확하게는 $defaults 배열을 반복하는 루프가 반복될 때마다 ST4_columns_content()가 호출됩니다. 각 반복에서 WordPress는 열 이름과 게시물 ID라는 두 가지 매개 변수를 함수에 전달합니다. 이 함수는 모든 열 이름을 분석하고 이름이 ST4_columns_head()에 지정한 이름과 같을 때 추천 이미지를 확인합니다.

이제 함수를 WordPress 플러그인 API에 연결할 수 있습니다.

manage_posts_columns 过滤器来挂钩 ST4_columns_head() 기능을 활용해보겠습니다. 이 필터는 게시물 목록에 표시되는 열을 수정하는 데 도움이 될 수 있습니다.

우리가 사용하는 또 다른 후크는 열 이름이 출력하려는 ​​열 이름과 일치하는지 확인하는 manage_posts_custom_column ,它将为帖子列表中的每个自定义列触发挂钩函数。我们的 ST4_columns_content() 함수입니다.

으아아아

102 매개변수는 함수 실행 순서(우선순위)와 함수에서 허용하는 매개변수 수입니다. 어쨌든 add_action 아래의 WordPress Codex에서 자세한 내용을 읽을 수 있습니다.


최종 결과

이제 마침내 추천 이미지가 포함된 게시물을 작성할 수 있습니다:

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

因此,当您在 /wp-admin/edit.php 中打开管理帖子屏幕时,您将看到新的特色图片列:

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

前两个帖子有特色图片,第三个帖子(没有特色图片的帖子)没有,因此不会显示任何内容。

要为没有特色图像的帖子显示默认图像,您可以这样修改 ST4_columns_content() 函数:

<?php
function ST4_columns_content($column_name, $post_ID) {
    if ($column_name == 'featured_image') {
		$post_featured_image = ST4_get_featured_image($post_ID);
		if ($post_featured_image) {
			// HAS A FEATURED IMAGE
			echo '<img src="' . $post_featured_image . '" />';
		}
		else {
			// NO FEATURED IMAGE, SHOW THE DEFAULT ONE
			echo '<img src="' . get_bloginfo( 'template_url' ); . '/images/default.jpg" />';
		}
	}
}
?>

default.jpg 图像必须存在于我们活动主题的 images 目录中。

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

您还可以通过打开屏幕选项面板并单击特色图像复选框来显示/隐藏此新列:

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

第 3 步。 将特色图像列添加到自定义帖子类型

WordPress 最有趣和最有用的功能之一是可以添加自定义帖子类型(以及自定义分类法)。您可以使用帖子类型创建不同于帖子和页面的新内容类型,例如管理电影数据库。事实上,当您添加自定义帖子类型时,WordPress 会创建该帖子类型的所有管理页面:您可以像默认帖子和页面一样添加、编辑和删除这些帖子。

现在我们通过 WordPress register_post_type() 函数创建一个新的自定义帖子类型:电影

add_action('init', 'ST4_add_movies');  
function ST4_add_movies() {
    $args = array(
		'label' => __('Movies'),
		'singular_label' => __('Movie'),
		'public' => true,
		'show_ui' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'rewrite' => true,
		'supports' => array('title', 'editor', 'thumbnail')
	);
	register_post_type( 'movie' , $args );
}

此功能可让您注册新的帖子类型。您应该注意,我们正在使用 init 挂钩来调用 ST4_add_movies(),然后它会注册我们的 movie 帖子类型。我们传递给 register_post_type() 函数的参数数组决定了自定义帖子类型的行为方式。在本例中,我们将 show_ui 键的值设置为 true。这会生成通过管理仪表板管理电影帖子类型所需的 UI。

因此,当您将特色图像添加到电影帖子时...

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

...您还将在管理电影屏幕中看到特色图像(请注意,您还可以在此处显示/隐藏“屏幕选项”中的列):

自定义 WordPress 帖子和自定义帖子类型管理屏幕中的列显示

其他用法

根据帖子类型添加自定义列

如果您使用 manage_posts_columnsmanage_posts_custom_column 挂钩,该列将显示在所有管理帖子屏幕中。事实上,这些过滤器适用于除页面之外的所有类型的帖子

// ALL POST TYPES: posts AND custom post types
add_filter('manage_posts_columns', 'ST4_columns_head');
add_action('manage_posts_custom_column', 'ST4_columns_content', 10, 2);

如果您想仅在管理帖子屏幕中添加列,请使用:

// ONLY WORDPRESS DEFAULT POSTS
add_filter('manage_post_posts_columns', 'ST4_columns_head', 10);
add_action('manage_post_posts_custom_column', 'ST4_columns_content', 10, 2);

如果您想仅在管理页面屏幕中添加列,请使用:

// ONLY WORDPRESS DEFAULT PAGES
add_filter('manage_page_posts_columns', 'ST4_columns_head', 10);
add_action('manage_page_posts_custom_column', 'ST4_columns_content', 10, 2);

如果您想仅在管理电影屏幕中添加列,请使用:

// ONLY MOVIE CUSTOM TYPE POSTS
add_filter('manage_movie_posts_columns', 'ST4_columns_head_only_movies', 10);
add_action('manage_movie_posts_custom_column', 'ST4_columns_content_only_movies', 10, 2);

// CREATE TWO FUNCTIONS TO HANDLE THE COLUMN
function ST4_columns_head_only_movies($defaults) {
    $defaults['directors_name'] = 'Director';
	return $defaults;
}

function ST4_columns_content_only_movies($column_name, $post_ID) {
	if ($column_name == 'directors_name') {
		// show content of 'directors_name' column
	}
}
 

将自定义列添加到其他帖子类型

如果您有其他自定义帖子类型,您可以轻松向其中添加特色图像列。如果您手动添加帖子类型,请检查添加自定义帖子的文件并查找 register_post_type() 函数的第一个参数:

register_post_type( 'book' , $args ); // book is the post type

如果自定义帖子类型是通过其他插件定义的并且/或者您找不到 register_post_type() 的位置,请在浏览器中打开自定义帖子管理屏幕并检查 URL:

http://www.yoursite.com/wp-admin/edit.php?post_type=<u>book</u>

在本例中,图书是帖子类型。

最后,以这种方式修改钩子,将电影替换为书籍

add_filter('manage_book_posts_columns', 'ST4_columns_book_head');
add_action('manage_book_posts_custom_column', 'ST4_columns_book_content', 10, 2);

不要忘记创建两个函数:ST4_columns_book_head() 用于创建列,ST4_columns_book_content() 用于显示列内容。

添加两个自定义列

如果您需要添加多个列,您可以轻松执行以下操作:

// ADD TWO NEW COLUMNS
function ST4_columns_head($defaults) {
    $defaults['first_column']  = 'First Column';
    $defaults['second_column'] = 'Second Column';
    return $defaults;
}

function ST4_columns_content($column_name, $post_ID) {
    if ($column_name == 'first_column') {
        // First column
    }
    if ($column_name == 'second_column') {
        // Second column
    }
}

删除默认列

您还可以删除 WordPress 默认列,例如帖子管理屏幕中的类别列:


add_filter('manage_post_posts_columns', 'ST4_columns_remove_category');

// REMOVE DEFAULT CATEGORY COLUMN
function ST4_columns_remove_category($defaults) {
    // to get defaults column names:
    // print_r($defaults);
    unset($defaults['categories']);
    return $defaults;
}

参考文献

  • WordPress 插件 API
  • WordPress 自定义帖子类型
  • 函数参考/添加操作
  • 插件 API/过滤器参考/管理帖子列
  • 插件 API/操作参考/管理帖子自定义列
  • 插件 API/过滤器参考/管理 $post 类型帖子列
  • 插件 API/操作参考/管理 $post 类型帖子自定义列

위 내용은 사용자 정의 WordPress 게시물 및 사용자 정의 게시물 유형 관리 화면의 열 표시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.