Giter Club home page Giter Club logo

wp-post-crud's Introduction

WP Post Crud

Provides CRUD class for handling WP Post Types in Actice Recordish way. Includes classes for detault WordPress types Post/Page and is extendable to include custom post types.

Aim is to abstract away awkward parts of creating, handling and deleting Posts programmatically in WordPress.

Installation

Via Composer:

composer require silvanus/wp-post-crud

To use autoloading mechanism, you must include vendor/autoload.php file in your code.

Issues & Contributing

If you find a bug or feel something is wrong, submit an issue or a pull request. Read the instructions first.

Usage

Post CRUD gives models that have create, read, update and delete methods. Main methods: set_field(), get_field(), save() and delete()

Creating new post

<?php

// Default post model.
use Silvanus\PostCrud\Models\Post as Model;

// Create new post instance.
$model = new Model();

// Set some values
$model->set_field('post_title', 'Lorem ipsum dolor sit amet');
$model->set_field('post_content', 'Dolor sit igitur.');

// Persist the data in database.
$model->save();

All fields values should match WP Post table columns.

Edit existing post

Models will automatically load WP Post data if you instantiate them with ID.

<?php

// Default post model.
use Silvanus\PostCrud\Models\Post as Model;

// Pass ID of post to model.
$model = new Model(89);

// Use existing data.
echo $model->get_field('post_title');
echo $model->get_field('post_content');
echo $model->get_field('post_name');

// Not a fan of that slug, change it.
$model->set_field('post_name', 'sluggity_slug');

// Persist the changes.
$model->save();

Delete post

<?php

// Default post model.
use Silvanus\PostCrud\Models\Post as Model;

// Post IDs to be deleted.
$post_ids = array(1995, 2011, 2019);

// These posts have been particularly silly.
foreach( $post_ids as $post_id ) {
    $model = new Model($post_id);
    $model->delete();
}

Custom Post Types

You can create your own classes for your own Custom Post Types. You only need to extend AbstractCrud class and provide name of post type.

<?php

// AbstractCrud class for all the heavy lifting.
use Silvanus\PostCrud\AbstractCrud;

/**
 * Minimal implementation for your post type.
 */
class Book extends AbstractCrud
{

    /**
     * Slug of post type you have already registered elsewhere.
     */
    protected $post_type = 'book';
}

Your class will have access to all the same methods.

<?php

// Your Book class
use YourName\YourNamespace\Book;

// Create new post book.
$book = new Book();

// Set up book data.
$book->set_field('post_title', 'Revelation Space');
$book->set_field('post_status', 'published');

// Persist.
$book->save();

Meta fields

Models can also handle metadata. Use set_meta() and get_meta() methods.

<?php

// Our book could use some meta data.
$book->set_meta('author', 'Alastair Reynolds');
$book->set_meta('rating', 5);

// Persist.
$book->save();

Shorthand methods

There are shorthand getters & setters for the most common use cases. Instead of using set_field($key, $value) or get_field($value), you can use the following:

<?php

// Set values using shorthands.
$model->set_title('Lorem ipsum');
$model->set_content('Dolor sit igitur, dolor sit amet.');
$model->set_excerpt('Dolor sit igitur');

// Access values through shorthands
echo $model->get_title();
echo $model->get_excerpt();

// Persist.
$book->save();

Other shorthands are: set_status($status), get_status(), set_slug($slug) and get_slug().

Under the hood AbstractCrud class will call set_field() and get_field() methods.

wp-post-crud's People

Contributors

stscoundrel avatar

Watchers

 avatar  avatar

Forkers

wp-posts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.