Documentation
¶
Index ¶
- Variables
- func Database(c context.Context) *sql.DB
- func GetCategoryIdBySlug(c context.Context, slug string) (int64, error)
- func GetOption(c context.Context, name string) (string, error)
- func GetTagIdBySlug(c context.Context, slug string) (int64, error)
- func NewContext(parent context.Context, wp *WordPress) context.Context
- func Table(c context.Context, tableN string) string
- type Attachment
- type Category
- type Iterator
- func QueryAttachments(c context.Context, opts *ObjectQueryOptions) (Iterator, error)
- func QueryPosts(c context.Context, opts *ObjectQueryOptions) (Iterator, error)
- func QueryTerms(c context.Context, opts *TermQueryOptions) (Iterator, error)
- func QueryUsers(c context.Context, opts *UserQueryOptions) (Iterator, error)
- type MenuItem
- type MenuItemList
- type MenuItemType
- type MenuLocation
- type MissingResourcesError
- type Object
- type ObjectQueryOptions
- type Post
- type PostStatus
- type PostType
- type Tag
- type Taxonomy
- type Term
- type TermQueryOptions
- type URLList
- type User
- type UserQueryOptions
- type WordPress
Constants ¶
This section is empty.
Variables ¶
var (
Done = errors.New("wordpress: no more rows to read")
)
Functions ¶
func GetCategoryIdBySlug ¶
GetCategoryIdBySlug returns the id of the category that matches the given slug
func GetTagIdBySlug ¶
GetTagIdBySlug returns the id of the category that matches the given slug
func NewContext ¶
NewContext returns a derived context containing the database connection
Types ¶
type Attachment ¶
type Attachment struct {
Object
FileName string `json:"file_name"`
Width int `json:"width,omitempty"`
Height int `json:"height,omitempty"`
Caption string `json:"caption"`
AltText string `json:"alt_text"`
Url string `json:"url,omitempty"`
}
Attachment represents a WordPress attachment
func GetAttachments ¶
func GetAttachments(c context.Context, attachmentIds ...int64) ([]*Attachment, error)
GetAttachments gets all attachment data from the database
type Category ¶
Category represents a WordPress category
func GetCategories ¶
GetCategories gets all category data from the database
func (*Category) GetChildId ¶
GetChildId returns the category id of the child looked up by it's slug
func (*Category) GetChildrenIds ¶
GetChildrenIds returns all the ids of the category and it's children
func (*Category) MarshalJSON ¶
MarshalJSON marshals itself into json
type Iterator ¶
func QueryAttachments ¶
func QueryAttachments(c context.Context, opts *ObjectQueryOptions) (Iterator, error)
QueryAttachments returns the ids of the attachments that match the query
func QueryPosts ¶
func QueryPosts(c context.Context, opts *ObjectQueryOptions) (Iterator, error)
QueryPosts returns the ids of the posts that match the query
func QueryTerms ¶
func QueryTerms(c context.Context, opts *TermQueryOptions) (Iterator, error)
QueryTerms returns the ids of the terms that match the query
func QueryUsers ¶
func QueryUsers(c context.Context, opts *UserQueryOptions) (Iterator, error)
QueryUsers returns the ids of the users that match the query
type MenuItem ¶
type MenuItem struct {
Id int64 `json:"id"`
ParentId int64 `json:"-"`
Order int `json:"-"`
Title string `json:"title"`
Link string `json:"url"`
Attr string `json:"attrs,omitempty"`
Classes string `json:"classes,omitempty"`
Target string `json:"target,omitempty"`
ObjectId int64 `json:"object_id"`
Object string `json:"object"`
Type MenuItemType `json:"type"`
Xfn string `json:"xfn,omitempty"`
Children []*MenuItem `json:"children,omitempty"`
}
MenuItem represents a WordPress menu item
func GetMenuItems ¶
func GetMenuItems(c context.Context, opts *ObjectQueryOptions) ([]*MenuItem, error)
GetMenuItems gets the entire menu hierarchy
It is also the most expensive operation in this package... use sparingly...
type MenuItemList ¶
type MenuItemList []*MenuItem
MenuItemList is used for sorting menu items
func (MenuItemList) Count ¶
func (mis MenuItemList) Count() int
func (MenuItemList) Len ¶
func (mis MenuItemList) Len() int
Len is the number of elements in the collection.
func (MenuItemList) Less ¶
func (mis MenuItemList) Less(i, j int) bool
Less reports whether the element with index i should sort before the element with index j.
func (MenuItemList) Swap ¶
func (mis MenuItemList) Swap(i, j int)
Swap swaps the elements with indexes i and j.
type MenuItemType ¶
type MenuItemType string
MenuItemType represents menu item link types
i.e. post_type, taxonomy, custom
const ( // MenuItemTypePost is a link to a specific post or page MenuItemTypePost MenuItemType = "post_type" // MenuItemTypeTaxonomy is a link to a category or post tag MenuItemTypeTaxonomy MenuItemType = "taxonomy" // MenuItemTypeCustom is a custom or external link MenuItemTypeCustom MenuItemType = "custom" )
type MenuLocation ¶
type MenuLocation struct {
Id int64 `json:"id"`
Name string `json:"name"`
Slug string `json:"slug"`
}
MenuLocation represents a WordPress menu location
type MissingResourcesError ¶
type MissingResourcesError []int64
func (MissingResourcesError) Error ¶
func (ids MissingResourcesError) Error() string
type Object ¶
type Object struct {
// The post's ID
Id int64 `json:"id"`
// The post author's ID
AuthorId int64 `json:"author"`
// The post's local publication time.
Date time.Time `json:"date"`
// The post's GMT publication time.
DateGmt time.Time `json:"-"`
// The post's content.
Content string `json:"content"`
// The post's title.
Title string `json:"title"`
// The post's excerpt.
Excerpt string `json:"excerpt"`
// The post's status.
Status PostStatus `json:"status"`
// Whether comments are allowed.
CommentStatus bool `json:"comment_status"`
// Whether pings are allowed.
PingStatus bool `json:"ping_status"`
// The post's password in plain text.
Password string `json:"-"`
// The post's slug.
Name string `json:"slug"`
// URLs queued to be pinged.
ToPing URLList `json:"-"`
// URLs that have been pinged.
Pinged URLList `json:"-"`
// The post's local modified time.
Modified time.Time `json:"modified"`
// The post's GMT modified time.
ModifiedGmt time.Time `json:"-"`
// A utility field for post content.
ContentFiltered string `json:"-"`
// The post's parent post.
ParentId int `json:"parent"`
// The post's unique identifier, not necessarily a URL, used as the feed GUID.
Guid string `json:"-"`
// A field used for ordering posts.
MenuOrder int `json:"-"`
// The post's type. (i.e. post or page)
Type string `json:"type"`
// An attachment's mime type.
MimeType string `json:"mime_type,omitempty"`
// Cached comment count.
CommentCount int `json:"-"`
}
Object represents a WordPress 'post' object
Not really a Post object, per se, since WP uses it for other things like pages and menu items. However it's in the 'posts' table, so... whatever...
func (*Object) GetMeta ¶
GetMeta gets the object's metadata from the database
Returns all metadata if no metadata keys are given
func (*Object) GetTaxonomy ¶
GetTaxonomy gets all term ids related to the object whose taxonomies match any of the given taxonomies
i.e. `GetTaxonomy("category")` will return all of the object's related categories
type ObjectQueryOptions ¶
type ObjectQueryOptions struct {
After string `param:"after"`
Limit int `param:"limit"`
Order string `param:"order_by"`
OrderAscending bool `param:"order_asc"`
PostType PostType `param:"post_type"`
PostStatus PostStatus `param:"post_status"`
Author int64 `param:"author_id"`
AuthorIn []int64 `param:"author_id__in"`
AuthorNotIn []int64 `param:"author_id__not_in"`
AuthorName string `param:"author_name"`
AuthorNameIn []string `param:"author_name__in"`
AuthorNameNotIn []string `param:"author_name__not_in"`
Category int64 `param:"category_id"`
CategoryAnd []int64 `param:"category_id__and"`
CategoryIn []int64 `param:"category_id__in"`
CategoryNotIn []int64 `param:"category_id__not_in"`
CategoryName string `param:"category_name"`
CategoryNameAnd []string `param:"category_name__and"`
CategoryNameIn []string `param:"category_name__in"`
CategoryNameNotIn []string `param:"category_name__not_in"`
MenuId int64 `param:"menu_id"`
MenuIdAnd []int64 `param:"menu_id__and_in"`
MenuIdIn []int64 `param:"menu_id__in"`
MenuIdNotIn []int64 `param:"menu_id__not_in"`
MenuName string `param:"menu_name"`
MenuNameAnd []string `param:"menu_name__and"`
MenuNameIn []string `param:"menu_name__in"`
MenuNameNotIn []string `param:"menu_name__not_in"`
Meta string `param:"meta"`
MetaAnd []string `param:"meta__and"`
MetaIn []string `param:"meta__in"`
MetaNotIn []string `param:"meta__not_in"`
Name string `param:"post_name"`
NameIn []string `param:"post_name__in"`
NameNotIn []string `param:"post_name__not_in"`
Parent int64 `param:"post_parent"`
ParentIn []int64 `param:"post_parent__in"`
ParentNotIn []int64 `param:"post_parent__not_in"`
Post int64 `param:"post_id"`
PostIn []int64 `param:"post_id__in"`
PostNotIn []int64 `param:"post_id__not_in"`
TagId int64 `param:"tag_id"`
TagIdAnd []int64 `param:"tag_id__and"`
TagIdIn []int64 `param:"tag_id__in"`
TagIdNotIn []int64 `param:"tag_id__not_in"`
TagName string `param:"tag_name"`
TagNameAnd []string `param:"tag_name__and"`
TagNameIn []string `param:"tag_name__in"`
TagNameNotIn []string `param:"tag_name__not_in"`
Query string `param:"q"`
Day int `param:"day_of_month"`
Month int `param:"month_num"`
Year int `param:"year"`
AfterDate time.Time
}
ObjectQueryOptions represents the available parameters for querying
Somewhat similar to WP's json plugin
type Post ¶
type Post struct {
Object
// The post's featured_media
FeaturedMediaId int64 `json:"featured_media,omitempty"`
// The post's categories
CategoryIds []int64 `json:"categories"`
// The post's tags
TagIds []int64 `json:"tags"`
// The post's metadata
Meta map[string]string `json:"meta"`
}
Post represents a WordPress post
type PostStatus ¶
type PostStatus string
PostStatus represents a WordPress post status
Posts in WordPress can have one of a number of statuses.
The status of a given post determines how WordPress handles that post.
const ( // PostStatusPublish is a published post PostStatusPublish PostStatus = "publish" // PostStatusFuture is a post which has been // published but it's publish date is in the future PostStatusFuture PostStatus = "future" // PostStatusDraft is a draft post PostStatusDraft PostStatus = "draft" // PostStatusPending is a post which is awaiting approval PostStatusPending PostStatus = "pending" // PostStatusPrivate is a private post PostStatusPrivate PostStatus = "private" // PostStatusTrash is a post that was trashed PostStatusTrash PostStatus = "trash" // PostStatusAutoDraft is an auto-saved post PostStatusAutoDraft PostStatus = "auto-draft" // PostStatusInherit inherits its status from its parent PostStatusInherit PostStatus = "inherit" )
func (PostStatus) Scan ¶
func (s PostStatus) Scan(src interface{}) error
Scan formats incoming data from a sql database
type PostType ¶
type PostType string
PostType represents a WordPress post type
There are five post types that are readily available to users or internally used by the WordPress installation by default:
Post, Page, Attachment, Revision, Navigation Menu Item ¶
https://codex.wordpress.org/Post_Types
const ( // PostTypeAttachment is an attachment PostTypeAttachment PostType = "attachment" PostTypeNavMenuItem PostType = "nav_menu_item" // PostTypePage is a page PostTypePage PostType = "page" // PostTypePost is a post PostTypePost PostType = "post" // PostTypeRevision is a revision PostTypeRevision PostType = "revision" )
type Tag ¶
Tag represents a WordPress tag
func (*Tag) MarshalJSON ¶
MarshalJSON marshals itself into json
type Taxonomy ¶
type Taxonomy string
Taxonomy represents term taxonomy names
i.e. categories, nav_menu, post_tag
type Term ¶
type Term struct {
// Term ID.
Id int64 `json:"id"`
// The term's name.
Name string `json:"name"`
// The term's slug.
Slug string `json:"slug"`
// The term's term_group.
Group int64 `json:"group"`
// Term Taxonomy ID.
TaxonomyId int64 `json:"-"`
// The term's taxonomy name.
Taxonomy string `json:"taxonomy"`
// The term's description.
Description string `json:"description"`
// ID of a term's parent term.
Parent int64 `json:"parent"`
// Cached object count for this term.
Count int64 `json:"-"`
}
Term represents a WordPress term
type TermQueryOptions ¶
type TermQueryOptions struct {
After string `param:"after"`
Limit int `param:"limit"`
Order string `param:"order_by"`
OrderAscending bool `param:"order_asc"`
Id int64 `param:"term_id"`
IdIn []int64 `param:"term_id__in"`
IdNotIn []int64 `param:"term_id__not_in"`
Name string `param:"term_name"`
NameIn []string `param:"term_name__in"`
NameNotIn []string `param:"term_name__not_in"`
ObjectId int64 `param:"object_id"`
ObjectIdIn []int64 `param:"object_id__in"`
ObjectIdNotIn []int64 `param:"object_id__not_in"`
ParentId int64 `param:"parent_id"`
ParentIdIn []int64 `param:"parent_id__in"`
ParentIdNotIn []int64 `param:"parent_id__not_in"`
Slug string `param:"term_slug"`
SlugIn []string `param:"term_slug__in"`
SlugNotIn []string `param:"term_slug__not_in"`
Taxonomy Taxonomy `param:"taxonomy"`
TaxonomyIn []Taxonomy `param:"taxonomy__in"`
TaxonomyNotIn []Taxonomy `param:"taxonomy__not_in"`
}
TermQueryOptions represents the available parameters for querying
type URLList ¶
type URLList []string
URLList represents a list of urls
This is just a helper to split incoming space-separated values from the database ¶
Used for pinged and to-ping urls
type User ¶
type User struct {
Id int64 `json:"id"`
Slug string `json:"slug"`
Name string `json:"name"`
Description string `json:"description"`
Email string `json:"-"` // don't leak my email info!! >:[
Gravatar string `json:"gravatar"`
Website string `json:"url"`
Registered time.Time `json:"-"`
}
User represents a WordPress user
type UserQueryOptions ¶
type UserQueryOptions struct {
After string `param:"after"`
Limit int `param:"limit"`
Id int64 `param:"user_id"`
IdIn []int64 `param:"user_id__in"`
IdNotIn []int64 `param:"user_id__not_in"`
Slug string `param:"slug"`
SlugIn []string `param:"slug__in"`
SlugNotIn []string `param:"slug__not_in"`
}
UserQueryOptions represents the available parameters for querying
type WordPress ¶
type WordPress struct {
TablePrefix string
// contains filtered or unexported fields
}
WordPress represents access to the WordPress database
func (*WordPress) Close ¶
Close closes the connection to the database
Not very useful when the sql package is designed to have long lived connections
func (*WordPress) SetMaxOpenConns ¶
SetMaxOpenConns sets the max number open connections