项目作者: walisc

项目描述 :
WordPress Object Oriented Wrapper - rapid development of plugins and themes
高级语言: PHP
项目地址: git://github.com/walisc/WPooW.git
创建时间: 2016-08-20T08:48:18Z
项目社区:https://github.com/walisc/WPooW

开源协议:MIT License

下载


Wordpress Object Oriented Wrapper

An OOP Wordpress wrapper for rapid development

If you have had to create a custom theme/plugin in WordPress (which requires quite a bit of configuration), you know this can be quite cumbersome.
This wrapper aims to simplify this process by providing an object-oriented library which abstracts most of the tasks associated with this.
Below is a simple example showing you how you can easily create a Custom PostType using this wrapper.

  1. //functions.php
  2. include 'wpAPI/wpAPI.php';
  3. $WPooW = new wpAPI();
  4. $bookReviewPostType = $WPooW->CreatePostType("_bookReview", "Book Review", true);
  5. $bookReviewPostType->AddField(new Text("_bookTitle", "Book Title"));
  6. $bookReviewPostType->AddField(new Text("_bookAuthor", "Book Author"));
  7. $bookReviewPostType->AddField(new Uploader("_bookImage", "Book Image"));
  8. $bookReviewPostType->AddField(new MultiSelect("_bookCategories", "Categories", ["Philosophy" => "Philosophy", "Auto-Biography" => "Auto-Biography", "Fiction" => "Fiction"]));
  9. $bookReviewPostType->AddField(new RichTextArea("_mySummary", "My Summary"));
  10. $bookReviewPostType->AddField(new Text("_myRating", "My Rating"));
  11. $bookReviewPostType->Render();

This will create a custom page (available via wp-admin). See below:-

intro_images

Fig1: Grid Layout of new custom type

intro_images_expanded

Fig2: Adding new custom type

To access the data added through the custom PostType, you can use a traditional WordPress query (WP_QUERY ) by referencing your declared PostType id (in the case above, it will be _bookReview). WPooW however, provides a wrapper class which makes it easier to access this data. An example of how you would fetch this data using the WPooW library is below:-

  1. <style>
  2. .book_block{
  3. display: inline-block;
  4. }
  5. .book_img{
  6. float: left;
  7. width: 50%;
  8. }
  9. .book_img img{
  10. height: 200px;
  11. width: auto;
  12. }
  13. .book_details {
  14. float: right;
  15. width: 45%;
  16. padding-left: 2%;
  17. }
  18. .book_details p {
  19. font-size: 14px;
  20. margin-bottom: 2px;
  21. margin-top: 2px;
  22. color: white;
  23. }
  24. </style>
  25. <div class="wrap">
  26. <?php
  27. $bookReviews = wpAPIObjects::GetInstance()->GetObject("_bookReview");
  28. foreach ($bookReviews->Query()->Select()->Fetch() as $book)
  29. {
  30. echo '<div class="book_block">';
  31. echo ' <div class="book_img">';
  32. echo ' <img src="'.json_decode( $book["_bookImage"])->url.'" alt="'.$book["_bookTitle"].'" >';
  33. echo ' </div>';
  34. echo ' <div class="book_details">';
  35. echo " <p>".$book["_bookTitle"]."</p>";
  36. echo " <p>".$book["_bookAuthor"]."</p>";
  37. echo " <p>". (is_array($book["_bookCategories"]) ? implode(',', $book["_bookCategories"]) : '')."</p>";
  38. echo " <p>".$book["_myRating"]."</p>";
  39. echo ' </div>';
  40. echo '</div>';
  41. }
  42. ?>
  43. </div>Result

Modifying the WordPress TwentySeventeen theme template our web page could look like:-

1529530425830

Documentation

The WPooW library is fully documented at http://wpoow.devchid.com. If you think of anything else that should be documented that’s not there, please do give a shout.

Contributing

WPooW is an opensource project and contributions are valued.

If you are contributing a bug fix, please create a pull request with the following details

  • The problem/bug you are addressing
  • The version of WPooW the fix is for
  • How you tested the fix

If it’s a new feature, please add it as a issue with the label enhancement, detailing the new feature and why you think it’s needed. Will discuss it there and once it’s agreed upon you can create a pull request with the details highlighted above.

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details

Notes

This library is designed to be used by developers for creating WordPress themes and plugins. It is not a plugin or a theme in and off itself.