📜  如何向我的博客模板 wordpress 添加评论 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:24:05.634000             🧑  作者: Mango

如何向我的博客模板 WordPress 添加评论 - TypeScript

如果您正在使用 WordPress 并且想要为您的博客添加评论功能,那么您来对地方了。在本文中,我们将使用 TypeScript 编写一个简单的评论系统,并将其添加到 WordPress 博客模板中。我们将使用 WordPress 提供的 REST API 来实现此功能。

1. 安装 TypeScript

使用以下命令来安装 TypeScript:

npm install -g typescript
2. 创建一个新项目

我们将使用 TypeScript 来创建一个简单的评论系统。使用以下命令来创建一个新的 TypeScript 项目:

mkdir my-comment-system
cd my-comment-system
npm init
tsc --init
3. 创建一个评论模型

我们将创建一个 comment.model.ts 文件来定义评论模型。评论模型将包含以下字段:

  • id:评论的唯一标识符。
  • name:发表评论的人的姓名。
  • email:评论人的电子邮件地址。
  • comment:评论的内容。
  • createdAt:评论的创建日期。
export interface Comment {
    id: string;
    name: string;
    email: string;
    comment: string;
    createdAt: Date;
}
4. 创建一个评论服务

我们将创建一个 comment.service.ts 文件来定义评论服务。我们将使用 WordPress 的 REST API 来管理评论。以下是代码片段:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Comment } from './comment.model';

@Injectable({ providedIn: 'root' })
export class CommentService {
  private baseUrl = 'https://your-wordpress-site.com/wp-json/wp/v2/';

  constructor(private http: HttpClient) {}

  addComment(comment: Comment) {
    return this.http.post(this.baseUrl + 'comments', comment);
  }

  getComments(postId: number) {
    return this.http.get(this.baseUrl + `comments?post=${postId}`);
  }
}

我们将在上面的服务中创建两个方法:

  • addComment():用于添加新评论。
  • getComments():用于检索所有评论。
5. 添加评论列表组件

我们将创建一个 comment-list.component.ts 文件来定义评论列表组件。以下是示例代码:

import { Component, Input, OnInit } from '@angular/core';
import { Comment } from '../comment.model';
import { CommentService } from '../comment.service';

@Component({
  selector: 'app-comment-list',
  templateUrl: './comment-list.component.html',
})
export class CommentListComponent implements OnInit {
  @Input() postId: number;
  comments: Comment[];

  constructor(private commentService: CommentService) {}

  ngOnInit() {
    this.commentService.getComments(this.postId).subscribe((comments) => {
      this.comments = comments;
    });
  }
}

我们从 CommentService 中检索所有评论,并将其分配给 comments 变量。我们将使用 Input 来接收当前文章的 ID。

6. 创建评论表单组件

我们将创建一个 comment-form.component.ts 文件来定义评论表单组件。以下是示例代码:

import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
import { Comment } from '../comment.model';

@Component({
  selector: 'app-comment-form',
  templateUrl: './comment-form.component.html',
})
export class CommentFormComponent {
  @Input() postId: number;
  @Output() onCommentAdded = new EventEmitter<Comment>();
  commentForm = this.fb.group({
    name: ['', Validators.required],
    email: ['', [Validators.required, Validators.email]],
    comment: ['', Validators.required],
  });

  constructor(private fb: FormBuilder) {}

  onSubmit() {
    const comment: Comment = {
      name: this.commentForm.value.name,
      email: this.commentForm.value.email,
      comment: this.commentForm.value.comment,
      postId: this.postId,
    };
    this.onCommentAdded.emit(comment);
    this.commentForm.reset();
  }
}

我们通过使用 @Input()@Output() 接收上一个组件中提供的数据来创建一个表单组件。请注意,表单组件使用 Angular 的 FormBuilder 来快速生成表单。

7. 添加评论模板

最后,我们将创建一个 comment.component.html 文件,并将之前创建的组件放入其中来创建评论模板。以下是示例代码:

<app-comment-form (onCommentAdded)="addComment($event)" [postId]="postId"></app-comment-form>
<app-comment-list [postId]="postId"></app-comment-list>

我们通过上面的模板来组合表单和列表组件,同时将上一个组件中提供的 postId 传递到相应组件。

结论

我们已经成功创建了一个简单的评论系统,并将其添加到 WordPress 博客模板中。使用 TypeScript 和 WordPress 的 REST API,我们可以轻松地创建出一个高效的评论功能。

Markdown 版本:

# 如何向我的博客模板 WordPress 添加评论 - TypeScript

如果您正在使用 WordPress 并且想要为您的博客添加评论功能,那么您来对地方了。在本文中,我们将使用 TypeScript 编写一个简单的评论系统,并将其添加到 WordPress 博客模板中。我们将使用 WordPress 提供的 REST API 来实现此功能。

## 安装 TypeScript

使用以下命令来安装 TypeScript:

npm install -g typescript


## 创建一个新项目

我们将使用 TypeScript 来创建一个简单的评论系统。使用以下命令来创建一个新的 TypeScript 项目:

mkdir my-comment-system cd my-comment-system npm init tsc --init


## 创建一个评论模型

我们将创建一个 `comment.model.ts` 文件来定义评论模型。评论模型将包含以下字段:

- `id`:评论的唯一标识符。
- `name`:发表评论的人的姓名。
- `email`:评论人的电子邮件地址。
- `comment`:评论的内容。
- `createdAt`:评论的创建日期。

```typescript
export interface Comment {
    id: string;
    name: string;
    email: string;
    comment: string;
    createdAt: Date;
}
创建一个评论服务

我们将创建一个 comment.service.ts 文件来定义评论服务。我们将使用 WordPress 的 REST API 来管理评论。以下是代码片段:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Comment } from './comment.model';

@Injectable({ providedIn: 'root' })
export class CommentService {
  private baseUrl = 'https://your-wordpress-site.com/wp-json/wp/v2/';

  constructor(private http: HttpClient) {}

  addComment(comment: Comment) {
    return this.http.post(this.baseUrl + 'comments', comment);
  }

  getComments(postId: number) {
    return this.http.get(this.baseUrl + `comments?post=${postId}`);
  }
}

我们将在上面的服务中创建两个方法:

  • addComment():用于添加新评论。
  • getComments():用于检索所有评论。
添加评论列表组件

我们将创建一个 comment-list.component.ts 文件来定义评论列表组件。以下是示例代码:

import { Component, Input, OnInit } from '@angular/core';
import { Comment } from '../comment.model';
import { CommentService } from '../comment.service';

@Component({
  selector: 'app-comment-list',
  templateUrl: './comment-list.component.html',
})
export class CommentListComponent implements OnInit {
  @Input() postId: number;
  comments: Comment[];

  constructor(private commentService: CommentService) {}

  ngOnInit() {
    this.commentService.getComments(this.postId).subscribe((comments) => {
      this.comments = comments;
    });
  }
}

我们从 CommentService 中检索所有评论,并将其分配给 comments 变量。我们将使用 Input 来接收当前文章的 ID。

创建评论表单组件

我们将创建一个 comment-form.component.ts 文件来定义评论表单组件。以下是示例代码:

import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
import { Comment } from '../comment.model';

@Component({
  selector: 'app-comment-form',
  templateUrl: './comment-form.component.html',
})
export class CommentFormComponent {
  @Input() postId: number;
  @Output() onCommentAdded = new EventEmitter<Comment>();
  commentForm = this.fb.group({
    name: ['', Validators.required],
    email: ['', [Validators.required, Validators.email]],
    comment: ['', Validators.required],
  });

  constructor(private fb: FormBuilder) {}

  onSubmit() {
    const comment: Comment = {
      name: this.commentForm.value.name,
      email: this.commentForm.value.email,
      comment: this.commentForm.value.comment,
      postId: this.postId,
    };
    this.onCommentAdded.emit(comment);
    this.commentForm.reset();
  }
}

我们通过使用 @Input()@Output() 接收上一个组件中提供的数据来创建一个表单组件。请注意,表单组件使用 Angular 的 FormBuilder 来快速生成表单。

添加评论模板

最后,我们将创建一个 comment.component.html 文件,并将之前创建的组件放入其中来创建评论模板。以下是示例代码:

<app-comment-form (onCommentAdded)="addComment($event)" [postId]="postId"></app-comment-form>
<app-comment-list [postId]="postId"></app-comment-list>

我们通过上面的模板来组合表单和列表组件,同时将上一个组件中提供的 postId 传递到相应组件。

结论

我们已经成功创建了一个简单的评论系统,并将其添加到 WordPress 博客模板中。使用 TypeScript 和 WordPress 的 REST API,我们可以轻松地创建出一个高效的评论功能。