• Interesting plugin.

    I was wondering whether this plugin can already or is planned to be, able to integrate with OpenLibary plugin. It seems this plugin is only for inputting book data you have on hand.

    I feel it’d be easier if users could search OpenLibrary, and have the book meta data pulled from OpenLibrary and used to prepopulate the BookReviewLibrary fields.

    Or perhaps automate the entire process by importing a list of ISBN numbers.

    Thanks

    http://wordpress.org/plugins/book-review-library/

Viewing 15 replies - 1 through 15 (of 15 total)
  • Plugin Author Chris Reynolds

    (@jazzs3quence)

    I haven’t looked at OpenLibrary yet, so I’m not sure what would be involved in pulling data from that into this plugin. This plugin was primarily written less to be about displaying a collection of books and more to be about a separate part of your site where you can keep reviews of books. I see you’ve already taken a look at OpenBook Book Data which is probably more what you are looking for, but I’ll put OpenLibrary on my radar and think about what would make sense in terms of integration with this plugin.

    Thread Starter WomperScomper

    (@womperscomper)

    My mistake! I meant OpenBook Data, not OpenLibrary. You’re correct.

    I come from a Drupal background which tends to have modules that integrate with other similar modules to improve and extend eachother’s functionality. I’ve still very new to WordPress. Your plugin seems like it could be very powerful if integrated with the OpenBook Data (OBD) plugin.

    Correct me if I’m wrong, but your plugin was originally designed as a “custom post type” of sorts?

    I understand your plugin is for reviews, I just imagined it’d be useful to piggyback off of the OBD plugin to pre-populate the book meta data – ISBN, title, author, publisher etc. The review portion would still be up to the user to complete. By prepopulating the basic book data fields, it’d make the user experience that much smoother.

    This is the workflow I imagine, assuming future integration with the OBD plugin:

    1. user searches for book

    2. the search function, using the OBD plugin, would check the current site’s DB to see if the book exists

    3. if the book does NOT exist, it’d check OpenLibrary, and if there is a match, display the book data/image in the search results

    4. from the results screen, a user could click a “add a review” button which would then trigger your plugin

    5. the user would be directed to the”create review” screen and all book data would be prefilled using data from OpenLibrary, the “review” section would be empty awaiting the user’s input

    6. alternatively, if a user does not want to add a review at that moment, but is just checking to see if a book has been added, the website should create a “placeholder” book page/post using prefilled book data from OpenLibrary that is stored on the site’s DB.

    Does this make sense? I’m happy to clarify if it’s too convoluted.

    Thanks

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    What you’re describing makes sense but it’s way outside the scope of what this plugin was intended to be (and, I suspect, what the other OpenBook Book Data plutin was trying to be). One key point is that this plugin is intended for users to add their reviews from the back-end — e.g. they already have an account (either one of the default WordPress user roles that can edit Book Reviews or one of the new ones added by this plugin, i.e. Librarian & Book Reviewer) and they’re managing content from the dashboard.

    The user experience you describe sounds very much front-end, e.g. I’m browsing the site, I search for a book, I find it — or don’t — and I can manipulate that data and add a review from the front of the site, without touching the WordPress dashboard. That enters into territory of building new functionality for front-end posting, dealing with login screens and user registration, etc., which were never part of how this plugin was designed to function.

    Another key point is the searching itself. Searching in WordPress is built-in, and searches content from all posts in the wp_posts database table. Your scenario prescribes a fallback search — i.e. I do a normal WordPress search, and if it fails to find a result, another search takes place that scrapes the OpenLibrary database to look for a book there. Besides adding loading time by running two searches, I have no idea if this is even possible in WordPress (specifically running the default WordPress search and then running a completely separate search — most search plugins I’ve looked at in the past replace the default WordPress search with their own search functionality) and if it is possible, I don’t know how advisable it would be to do a double-search for reasons I just pointed out. Assuming you could do it, you’d then need to deal with displaying the search results, which are likely to come up in a completely different format and layout than a regular WordPress search and wouldn’t be a great user experience if the user was expecting the results to come out one way and they come back looking completely different.

    I looked at OpenLibrary yesterday a bit — and I’d consider integrating elements of it into this plugin EXCEPT that when I did book and author searches, I got a lot of empty results for things I was looking for. So then I thought maybe I could just use it for book covers instead of having the user upload covers. Except that there were a lot of those missing as well — so I wouldn’t want to replace the uploading of book covers from my plugin and replace it with covers automatically fetched from their database because their database is incomplete — and having two different ways of doing the same thing would be confusing and disruptive to the user. When I finally did find some books in OpenLibrary, I wasn’t overly impressed by the information they gave me. It didn’t add any value to what is already handled by the Book Review Library plugin. As a user entering in book reviews, I’m already adding the author and the title — if I was going to grab that data from somewhere else, I’d need to enter it in first anyway or else know the ISBN off the top of my head. And if I did know the ISBN, then I’d need to wait again until the plugin was able to fetch whatever data it could (if it existed) from the OpenLibrary database before I could start writing my review. And in the time it would take to fetch that data, I could already be halfway done with those tasks of adding the author and/or title, so I really couldn’t see any value there. If OpenLibrary had other data it stored, like genre or subject information, that would be something else — but I’d still need to develop a way to automatically add those items as taxonomy terms from their system into WordPress, which, again, would involve waiting for their server to respond and I’m not overly enthused about adding anything to the plugin that’s going to involve waiting for something else to reply back before the reviewer can do their work.

    The other plugin is simple and streamlined — you give it an ISBN number, it queries specifically for that number, and displays the results. That’s something I could see being applicable to a wide array of people. This plugin, having been written specifically for a pair of librarians I was working with based on things they specifically requested, is similarly narrow in scope — it does a thing (in this case creates a review post type to allow you to write and display book reviews on a separate part of your website) and has the added bonus of being able to pull up those reviews in a variety of different ways since all the sortable elements (author, subject, genre, even rating) are set up as taxonomies, so you can pull up all the items with the same term, like all books with a five star rating.

    Pulling in complex functionality from a third party service would be a great idea for a particular project, but not something I imagine would be of widespread appeal. I would use the book review library (if, you know, I had time to write a bunch of book reviews 🙂 ), I don’t know that I would want to have to wait for data to be returned from a third party service only to find it didn’t have what I was looking for anyway before I could write my review. It’s possible that I’m completely wrong and there are people out there who share your desire and are dying for this feature. To me, though, that’s for another plugin or for a specific site/project, not really for this one.

    The last thing I want to say is that I spent a lot of time developing this plugin. The only reason I put it on WordPress.org instead of trying to sell it and make it worth the time it took to develop was because I really didn’t want to have to spend more time dealing with figuring out pricing models and support and all that. It was just quicker and easier and less hassle to put it up for free. And I was doing it for a specific project/site that I maintain, so there’s that. While I wouldn’t necessarily be opposed to looking into adding complexity or building an add-on plugin to this that added the types of things you’re looking for, I’m really not inclined to spend a lot more time making massive, massive changes to this plugin after having already spent so much time developing it in the first place. But if you would be interested in sponsoring development for what you are looking for, feel free to contact me off the forums and we can talk about it.

    Thread Starter WomperScomper

    (@womperscomper)

    Thanks for taking the time to make this detailed response, Chris. It cleared up a lot of things.

    You noted that this plugin requires data input via the WP dashboard. I’m not entirely opposed to this approach, I just wonder if it’s possible to use this plugin with a free off-the-shelf theme that could make the “create review” process less “dashboard-looking,” ideally restricting the access to only one task – create the review. With that said, is it possible for this plugin to support with one of the various “form plugins” to provide a more basic user/one-task experience as opposed to a site-admin/multi-task experience?

    The search issue, as you explained it, is very likely and is is something I’ll have to investigate further. Two searches would be resource intensive and laggy, hampering the user experience. Mind you, I wouldn’t limit the search to by-ISBN only, it’d be more practical if a user can search on any book facet – ISBN, author, title, publisher, subject, genre etc. I’m not sure if that would be more efficient on the back-end and for the user.

    I hadn’t actually tried the OBD/OpenLibrary plugin yet as I’m still researching, but it’s interesting to hear your experience that it’s database isn’t as fleshed out as I had assumed it to be. I’ll have to look into that too.

    Thanks for clarifying things. Your feedback as put things into perspective. My experience is with Drupal, thus I still have a very Drupal-centric view on things. I’m learning more and more about WP, and you’ve helped.

    I think my next steps will be to investigate whether there are plugins to allow me to hack plugins to play nicely together to get the functionality I need. I’m not sure if you can help me with this, but do you have any recommendations of plugins that would support rule-based actions plugins or prepopulating-field plugins?

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    …I just wonder if it’s possible to use this plugin with a free off-the-shelf theme that could make the “create review” process less “dashboard-looking,” ideally restricting the access to only one task – create the review.

    Off-the-shelf? Not likely. At minimum, you’d need to give users the ability to create posts, which requires login/authentication, and usually that isn’t built into a theme. Plugins, maybe, and there are a number of plugins that will let your users sign in without showing them the dashboard.

    That’s fine and dandy, but the second part of this equation is giving users the ability to create/edit reviews without touching the back-end. Since book reviews are not a standard post type, even if there was a solution out there, it would need to work with custom post types. It’s possible (I haven’t checked lately) that Gravity Forms may offer this. And, for what it’s worth, it’s not that hard to build a template that allows front-end post editing, it just, you know, needs to be coded.

    On the upside, though, the Book Reviewer and Librarian user roles of this plugin don’t give users assigned to those roles full access to the rest of the dashboard. Librarians can create and publish posts and pages but only their own (in addition to having full access over book review posts, their own or otherwise). Book Reviewers can publish posts but not pages and only have access to edit their own stuff (reviews or posts). So, by using those new roles added by the Book Review Library plugin, you are limiting the user in what they are able to do as opposed to giving them a full Admin account (which I am generally opposed to as a rule).

    Mind you, I wouldn’t limit the search to by-ISBN only, it’d be more practical if a user can search on any book facet – ISBN, author, title, publisher, subject, genre etc.

    Right, I used that as an example because that’s one thing that I don’t have in this plugin and that’s the easiest way to pull up information about a specific book. I was thinking from a reviewer perspective, okay, I’m going to write a review, I could do a search by book author, Or I could just tick the box (if it has already been created in the Book Review Library plugin) or make a new one. It takes just as much time to type out the name and create a new author as it would to type out the name and run a search, so that’s not practical. Same with any of the other fields. So if there were any actual value added by pulling up an entry from OpenLibrary by ISBN, then, as a developer, I’d consider adding it. But I just didn’t see a whole lot there when I played around in their database…not anything I could easily use and integrate, at least.

    Keep in mind that when I’m talking about OpenLibrary, I’m not referring to the OpenBook Book Data WordPress plugin that hooks into their system. His plugin is just another plugin and it pulls data from OpenLibrary and I’m guessing if you were using his plugin, and you gave it the ISBN of a book it didn’t have like 9780470916223, which pulls up a not found result on OpenLibrary but is the ISBN for this, you’d get a similar result, a shortcode that just doesn’t return any information. For his plugin, that’s less of a problem. Because you’re using a shortcode, which means you’re probably entering it into a post or a page. So if you find an ISBN or an author that doesn’t exist in their database, it isn’t a huge issue, you just don’t include that extra information. Nothing is really hurt. But making it a core component of this or any other plugin, in which you are fetching data to fill in the blanks and you’re doing it in such a way that you’d want to do a check/search before doing your work means that there isn’t much wiggle room if the service you’re using is lacking entries — as soon as you pull a negative search result, you’ve just wasted the user’s time.

    do you have any recommendations of plugins that would support rule-based actions plugins or prepopulating-field plugins?

    There are a couple things I can think of off the top of my head. They may not be for every situation, but it could give you a head start. Like I said, I’m pretty sure you can set up Gravity Forms to post data submitted via a form as an actual post. I’m not sure if it supports custom post types or not. Unfortunately, Gravity Forms isn’t free, so you can’t just play with it and find out (though they do have a demo), but if you’re doing anything in WordPress, it’s worth looking at anyway, because it’s a fantastic plugin. Gravity Forms also includes conditional logic in their forms, so if these fields are filled out, show this other field or these other options. It’s one of the few contact form plugins I’ve seen for WordPress that do that, and that’s a big bonus.

    Ninja Forms is another plugin that can do conditional logic. The base plugin is free, but the conditional logic component is an add-on that you purchase from their site. The also have a separate add-on that enables front-end posting, which does support custom post types. So, those two things combined could be really powerful.

    And then a peripherally-related plugin that I know of off the top of my head is Widget Logic — this adds php if/else logic to display (or hide) sidebar widgets, which is related to your rule-based actions thing. But then, that’s probably not something you’d really use straight off, since widgets aren’t what you’re trying to manipulate, and if you’re using it to dig through the code, you might as well just write your own plugin. 🙂

    The thing is, you’re not just prepopulating fields, you’re fetching it from a third party source, and that’s a whole different can of worms and comes along with a hefty dose of necessary transaction time as your script reaches out to ping the service you’re using and wait for a response. If it came down to it, and you’re trying to get book data (or anything else) it may be more worth your while to see if you can get that information from some other resource — for example, it used to be possible (it’s been a while since I looked) to set up an Amazon developer account and use an API key to fetch things like product images (e.g. book covers) — I don’t know their current API and developer resources well enough these days but in theory it seems like if you could do that, you may be able to get other information (genre, subjects, ISBN, description) and Amazon’s servers are probably among the fastest you’d ever need to use.

    Thread Starter WomperScomper

    (@womperscomper)

    Many valid points, Chris.

    I think I’ve figured out a plan of attack. I’ll just need to find out whether WP can support it with free plugins and without much custom coding.

    – Create book post type
    – Create review post type
    – Make an association between book and review post time
    – Display links to reviews on associated book page

    – Make search both search internal DB and OpenLibrary using some sort of rule-based control
    – Automate creation of book post using data from OpenLibrary or support manual creation of books by users

    – Make all book meta data fields searchable

    With this said, I’m guessing your plugin will support the first two readily – book and review post type with relationship, correct?

    In regards to form plugins you suggested, will they allow me to use them to create a book/review post using a form (front-end vs dashboard)?

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    In regards to form plugins you suggested, will they allow me to use them to create a book/review post using a form (front-end vs dashboard)?

    Both Gravity Forms and Ninja Forms (with the front-end posting extension) can do this. Both are premium plugins which means you need to pay for a support license to get a copy, but I’d recommend either as they’re both great plugins.

    And yes, Book Review Library creates the book review post type and various relationships based on genre, author, and other fields.

    Thread Starter WomperScomper

    (@womperscomper)

    Gotcha.

    Along the topic of using a form plugin, can they (Ninja and Gravity) be used to create a form (add book or review) to interface with this plugin, ie. avoiding the dashboard?

    For a free form plugin alternative, do you have experience with Form Maker? Would it provide the same functionality as the other two?

    Also, based on looking at the screenshots provided with the plugin, it appears the other fields – genre, author etc. – are predefined and fixed. Is that the case? I ask because I’d like to add additional fields related to book and book review, such as location.

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    can they (Ninja and Gravity) be used to create a form (add book or review) to interface with this plugin, ie. avoiding the dashboard?

    A form to create a form? I doubt it. Because of the variables involved, that’s probably something that can only be done on the back-end.

    For a free form plugin alternative, do you have experience with Form Maker? Would it provide the same functionality as the other two?

    I’m not familiar with that plugin, but from glancing at the description, it doesn’t look like you can use it to post content from the front end, so you wouldn’t be able to use that to post book reviews.

    Also, based on looking at the screenshots provided with the plugin, it appears the other fields – genre, author etc. – are predefined and fixed. Is that the case? I ask because I’d like to add additional fields related to book and book review, such as location.

    Yes. You could add your own taxonomies (like location) and set them to interact with book reviews but you’d need to also develop a solution for displaying them.

    Thread Starter WomperScomper

    (@womperscomper)

    So there is no way to use a form plugin to create posts ie. mapping form fields to create post form fields?

    I ask, because when you mentioned that this plugin creates book review posts via the dashboard, it started to get me a little concerned with the user experience and thus wondering if a non-dashboard form would be better.

    Thanks again

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    So there is no way to use a form plugin to create posts ie. mapping form fields to create post form fields?

    As far as I know, there is no pre-made plugin that will be a 1:1 map with all of the available fields for a custom post type (like book reviews). Which means, you could put the main review body on the front end, but other things that are handled by custom taxonomies (like author, genre, etc) would probably not be available to the person submitting the review on the front end. To do that, and have all the right fields available, you’d need to build a custom front-end posting plugin or it would need to be integrated into the plugin.

    I’m not necessarily even opposed to building a shortcode that could be used to create reviews on the front end, but it would take time to build and it would still only be available to people with a registered account on the site (visitors and users without posting access shouldn’t have the ability to add posts for security reasons).

    Thread Starter WomperScomper

    (@womperscomper)

    Good points.

    I think I’ve come across some possible non-custom approaches for form-to-post functionality. It seems my best approach would be create a custom “book” and “review” post type using the “Types” plugin and then this plugin (or something similar) to make the form-to-post connection.

    I will have to investigate further, but it’s a pity that I’m somewhat reinventing the wheel since your plugin readily offers much of the functionality (book- and review-wise).

    I’ve yet to check this myself, but to save some time, with your plugin, does it create a parent-child relationship between the book and review post types? And does it support multiple reviews for a single book?

    Thanks again

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    there aren’t separate post types for book & review. It’s just one post type, book-review. So…no. 🙂

    Thread Starter WomperScomper

    (@womperscomper)

    Okay, thanks. That clears up a lot and made my decision much easier. Thanks for taking the time to explain this stuff for me.

    Plugin Author Chris Reynolds

    (@jazzs3quence)

    NP. 🙂

Viewing 15 replies - 1 through 15 (of 15 total)
  • The topic ‘Integration with OpenLibrary plugin’ is closed to new replies.