Tag Archives: WordPress

Getting data from wikidata into WordPress custom taxonomy⤴

from @ Sharing and learning

I created a custom taxonomy to use as an index of people mentioned. I wanted it to work nicely as linked data, and so wanted each term in it to refer to the wikidata identifier for the person mentioned. Then I thought, why not get the data for the terms from wikidata?

Brief details

Lots of tutorials on how to set up a custom taxonomy with with custom metadata fields. I worked from this one from smashingmagazine, to get a taxonomy call people, with a custom field for the wikidata id.

Once the wikidata is entered, this code will fetch & parse the data (it’s a work in progress as I add more fields)

<?php
function omni_get_wikidata($wd_id) {
    print('getting wikidata<br />');
    if ('' !== trim( $wd_id) ) {
	    $wd_api_uri = 'https://wikidata.org/entity/'.$wd_id.'.json';
    	$json = file_get_contents( $wd_api_uri );
    	$obj = json_decode($json);
    	return $obj;
    } else {
    	return false;
	}
}

function get_wikidata_value($claim, $datatype) {
	if ( isset( $claim->mainsnak->datavalue->value->$datatype ) ) {
		return $claim->mainsnak->datavalue->value->$datatype;
	} else {
		return false;
	}
}

function omni_get_people_wikidata($term) {
	$term_id = $term->term_id;
    $wd_id = get_term_meta( $term_id, 'wd_id', true );
   	$args = array();
   	$wikidata = omni_get_wikidata($wd_id);
   	if ( $wikidata ) {
    	$wd_name = $wikidata->entities->$wd_id->labels->en->value;
    	$wd_description = $wikidata->entities->$wd_id->descriptions->en->value;
    	$claims = $wikidata->entities->$wd_id->claims;
   		$type = get_wikidata_value($claims->P31[0], 'id');
   		if ( 'Q5' === $type ) {
			if ( isset ($claims->P569[0] ) ) {
				$wd_birth_date = get_wikidata_value($claims->P569[0], 'time');
				print( $wd_birth_date.'<br/>' );
			}
   		} else {
	   		echo(' Warning: that wikidata is not for a human, check the ID. ');
	   		echo(' <br /> ');
   		} 
    	$args['description'] = $wd_description;
    	$args['name'] = $wd_name;
		print_r( $args );print('<br />');
    	update_term_meta( $term_id, 'wd_name', $wd_name );
    	update_term_meta( $term_id, 'wd_description', $wd_description );
    	wp_update_term( $term_id, 'people', $args );
    	
   	} else {
   		echo(' Warning: no wikidata for you, check the Wikidata ID. ');
   	}
}
add_action( 'people_pre_edit_form', 'omni_get_people_wikidata' );
?>

(Note: don’t add this to edited_people hook unless you want along wait while causes itself to be called every time it is called…)

That on its own wasn’t enough. While the name and description of the term were being updated, the values for them displayed in the edit form weren’t updated until the page was refreshed. (Figuring out that it was mostly working took a while.) A bit of javascript inserted into the edit form fixed this:

function omni_taxonomies_edit_fields( $term, $taxonomy ) {
    $wd_id = get_term_meta( $term->term_id, 'wd_id', true );
    $wd_name = get_term_meta( $term->term_id, 'wd_name', true ); 
    $wd_description = get_term_meta( $term->term_id, 'wd_description', true ); 
//JavaScript required so that name and description fields are updated 
    ?>
    <script>
	  var f = document.getElementById("edittag");
	  var n = document.getElementById("name");
  	  var d = document.getElementById("description");
  	  function updateFields() {
  		n.value = "<?php echo($wd_name) ?>";
  		d.innerHTML = "<?php echo($wd_description) ?>";
  	  }

	  f.onsubmit=updateFields();
	</script>
    <tr class="form-field term-group-wrap">
        <th scope="row">
            <label for="wd_id"><?php _e( 'Wikidata ID', 'omniana' ); ?></label>
        </th>
        <td>
            <input type="text" id="wd_id"  name="wd_id" value="<?php echo $wd_id; ?>" />
        </td>
    </tr>
    <?php
}
add_action( 'people_edit_form_fields', 'omni_taxonomies_edit_fields', 10, 2 );

 

The post Getting data from wikidata into WordPress custom taxonomy appeared first on Sharing and learning.

WordCamp Edinburgh, thoughts #wcedin⤴

from @ wwwd – John's World Wide Wall Display

I just spent Saturday and half of Sunday at WordCamp Edinburgh 2017. This is only my third WordCamp, but I though it might be worth typing up a few impressions.

The camp was very nicely organised, ran to time, had good food, the venue was great. Minimal friction for attendees.

The vibe was quite like a TeachMeet although most of the presentations were an hour long and a bit more formal. I guess Wordcamp like TM has its roots in Bar Camp? Compared to a TeachMeet the sponsored were more visible and more part of the community. This felt fine as I guess most of the attendees were professional working alongside the sponsors. (I am not a fan of the over sponsorship of TeachMeets)

The talks were very varied, some technical, some business related. All the ones I went to were informative and enjoyable. There seemed to be a strong strand about using WordPress for the good, democracy and social change.

Social Good

Two of the keynotes were to do with this idea of social good. The opening one on day one was by Leah Lockhart, who talked about helping community groups and local politicians to communicate. I felt there were a lot in common with eduction. Schools have embraced online communication in the same sort of way, veering towards twitter ( probably less Facebook that community groups) as an easy way to get messages out. In the same way they lose control of their information and its organisation. Leah spoke of the way WordPress could give you a better long term result.

Leah also explained that it is hard for community groups to be able to design how their information gets out. I think we are at the point where WordPress is easy enough to use the difficulty comes in using it in a strategic way that maximises its potential. I’ve got a fair bit of experience in helping schools use WordPress in a practical sense and there is plenty of online help for that. There is a gap to be filled in the preparation and planning. If this is solved for community groups it might be easy to repurpose the information and processes for education.

Bridget Hamilton spoke of Using WordPress to create social change. Her story of her site Verbal Remedy was inspirational. A blog provide effective communication without much in the way of backing.

Technical

I went to a few of the more technical talks.

Mark Wilkinson spoke of ‘a deep understanding of actions and filters’. Since I mess around with code in WordPress at a very basic level this was a really useful talk for me. It was just pitched at the right level. I’ve used these with only a basic understanding. I think Mark got me to the point I could being to understand things a lot better the next time I dip in. Mark’s Slides

Tom Nowell spoke about the WordPress Rest API for beginners, he meant beginners with the API not generally. I held on by the skin of my teeth. Luckily I follow Tom Woodward and had played with the API in a much simpler way than either Tom documented. Yesterday I added a wee bit to my homepage to pull in the last status from my blog! Tom’s Slides

Twitter vs Blogs

Franz Vitulli talked about aspects of the pull between Social media and blogging it was good to hear another view of the area I’ve been reading and thinking about from an indieweb point of view.

Progressive Enhancement

Ben Usher Smith gave this talk, at first I thought it was a bit out of my wheelhouse, but it became apparent that the process of progressive enhancement can be applied to any sort of enterprise. I hope to be more aware of this when planning for my class next session. Ben’s post Progressive enhancement — More than just works without JavaScript on medium.

Even More…

I went to a few other talks all of which I enjoyed. Even the ones I though I was choosing almost at random had something interesting to them. Often it was in thinking about how the ideas or principles fitted into my world.

I took notes during the talks using Little Outliner 2, this meant I could publish as I went along: Notes from #wcedin. I am really liking using an outliner for this process, although I don’t think an iPad was as good as a laptop would have been. There are a few different links and thoughts there.

After I got back I feed the twitter hash tag into Tags, Martin Hawksey’s tool. This gives me TAGSExplorer: Interactive archive of twitter conversations from a Google Spreadsheet for #wcedin .

I probably missed a few opportunities to talk to folk, I found myself feeling a bit less social than I do in my TeachMeet comfort zone. But the atmosphere was very relaxed and inclusive. I’d recommend educators with an interest in blogging to join in if there is a Wordcamp near them.

WordPress menus fixed, fault mine & mine alone⤴

from @ wwwd – John's World Wide Wall Display

I just updated my blog to the latest version of WordPress.

All seemed fine until I had a look at the site. Some of my menus had went a little weird.

Quite a few of the titles had changed to ellipses! I went into the dashboard and changed them back, my changes didn’t stick. I presumed that it must have been the upgrade. I had no idea where to start so shot off a quick tweet for help.

After dinner I calmed down a little and though about the changes to my blog I’d made recently for mico blogging. One of those was to give posts without a title titles on wp_insert_post_data. It uses ellipse! This was meant for posts arriving from the micro.blog app. They would get titles set when they arrived on my blog, to prevent ugliness in he dashboard.


function modify_post_title($data)
{
    if ($data[ 'post_title' ] == ''  ) {
        //wp_filter_nohtml_kses strips html and then I replace &nbsp; 
        $title = str_replace( "&nbsp;" , " " , substr( wp_filter_nohtml_kses( $data[ 'post_content' ] ) , 0, 60 ) ) . "..." ;
        $data['post_title'] =  $title ;
    }
    return $data; // Returns the modified data.
} 

so I’ve changed the if to:
if ($data[ 'post_title' ] == '' && $data[ 'post_type' ] == 'post' )

Which seems to have solved the problem and taught me a lesson.

Adventures in micro blogging part 1⤴

from @ wwwd – John's World Wide Wall Display

I signed up for the kickstarter of micro.blog, it went live earlier this week.

Micro.blog is a new social network for independent microblogs.
Start a microblog today. Easy to publish, own your content, great cross-posting.

Micro.blog

The service is very new and so far has changed and developed every day.

The idea is, you publish short posts, these are mirrored on micro.blog/yourusername via RSS. The posts can be from any RSS feed. You can get a micro.blog hosted blog at yourusername.micro.blog or use your own hosting.

The micro.blog iOS app will post to your micro.blog blog or your own WordPress blog. Or you can use your own system. There is a microblog bot that will post your posts on to Twitter too.

The difference between the hosted blog and your micro.blog/username stream is a mite confusing at the moment. I wonder if a different domain name might have helped.

Both the hosted blog and the twitter bot are paid for options. The docs make it clear that you can host your own and point to IFTTT as an alternative to the bot.

The system follows the indieweb principle of controlling your own content and sending it on to other spaces.

Replies on micro.blog to your posts are sent as webmentions to your own blog and show up as comments if you have the webmention plugin installed. I had that already to get twitter replies as comments.

My setup

I’ve added a new category here, micro. I’ve edited the blog to not have posts with this category show on the home page, they show on micro instead.

I set the micro.blog app to create posts with the status format in the micro category.

I turned off the jetpack social posting to Twitter function. I’ll manually post normal posts. I’ve set up a micro.blog bot to post to Twitter.

The service is very much a work in progress, and I’ve not really read the docs but I’ve noticed a few interesting things.

titleless

On is that the posts on micro.blog consist of descriptions with no titles. When you post form the app, you get a post on your blog without a title. A post with a title on your blog is posted as a link to micro.blog. With a post without out a title the description becomes the content of the micro.blog post.

That means you get lots of posts listed in your dashboard as ‘no title’. Since I didn’t like this I tried to auto add titles to posts without titles with a little Google-fu and some WordPress coding.

This worked out fine, except the posts on micro.blog consist of a title and a link, the tweet posted by the twitter bot is the same.

I am now looking to create a custom RSS feed without title. More googling ahead.

Alternatively I could use the code from Tweaks for micro.blog that adds dates as titles, micro.blog ignore these.

Or just learn to live with ‘no title’ posts in the dashboard.

Me on Micro.blog

Preparing for the microblog is a lot more coherent than this post if you are looking for setup advice.

I’ll post the code I’ve mentioned above at some point, it is pretty simple stuff.

Reflections on a little bit of open education (TL;DR: it works).⤴

from @ Sharing and learning

We are setting up a new honours degree programme which will involve use of online resources for work based blended learning. I was asked to demonstrate some the resources and approaches that might be useful. This is one of the quick examples that I was able to knock up(*) and some reflections on how Open Education helped me. By the way, I especially like the last bit about “open educational practice”. So if the rest bores you, just skip to the end.

(*Disclaimer: this really is a quickly-made example, it’s in no way representative of the depth of content we will aim for in the resources we use.)

Making the resource

I had decided that I wanted to show some resources that would be useful for our first year, first semester Praxis course. This course aims to introduce students to some of the skills they will need to study computer science, ranging from appreciating the range of topics they will study to being able to use our Linux systems, from applying study skills to understanding some requirements of academic writing. I was thinking that much of this would be fairly generic and must be covered by a hundred and one existing resources when  I saw this tweet:

That seemed to be in roughly the right area, so I took a look at the University of Nottingham’s HELM Open site and found an Introduction to Referencing. Bingo. The content seemed appropriate, but I wasn’t keen on a couple of things. First, breaking up the video in 20sec chunks I fear would mean the student spend more time ‘interacting’ with the Next-> button than thinking about the content. Second, it seems a little bit too delivery oriented, I would like the student to be a little more actively engaged.

I noticed there is a little download arrow on each page which let me download the video. So I downloaded them all and used OpenShot to string them together into one file. I exported this and used the h5p WordPress plugin to show how it could be combined with some interactive elements and hosted on a WordPress site with the hypothes.is annotation plugin, to get this:

The remixed resource: on the top left is the video, below that some questions to prompt the students to pay attention to the most significant points, and on the right the hypothes.is pop-out for discussion.

How openness helps

So that was easy enough, a demo of the type of resource we might produce, created in less than an afternoon. How did “openness” help make it easy.

Open licensing and the 5Rs

David Wiley’s famous 5Rs define open licences as those that let you  Reuse, Revise, Remix, Retain and Redistribute learning resources. The original resource was licensed as CC:BY-NC and so permitted all of these actions. How did they help?

Reuse: I couldn’t have produced the video from scratch without learning some new skills or having sizeable budget, and having much more time.

Revise: I wasn’t happy with the short video / many page turns approach, but was  able to revise the video to make it play all the way through in one go.

Remix: The video was then added to some formative exercises, and discussion facility added.

Retain: in order for us to rely on these resources when teaching we need to be sure that the resource remains available. That means taking responsibility keeping it available. Hence we’ll be hosting it on a site we control.

Redistribute: we will make our version available to other. This isn’t just about “paying forward”, it’s about the benefits that working in an open network being, see the discussion about nebulous open education below.

One point to make here: the licence has a Non-Commercial restriction. I understand why some people favour this, but imagine if I were an independent consultant brought in to do this work, and charged for it. Would I then be able to use the HELM material? The recent case about a commercial company charging to duplicate CC-licensed material for schools, which a US judge ruled within the terms of the licence might apply, but photocopying seems different to remixing. To my mind, the NC clause just complicates things too much.

Open standards, and open source

I hadn’t heard much about David Wiley’s ALMS framework for technical choices to facilitate openness (same page as before, just scroll a bit further) but it deals directly with issues I am very familiar with. Anyone who thinks about it will realise that a copy-protected PDF is not open no matter what the licence on it says. The ALMS framework breaks the reasoning for this down to four aspects: Access to editing tools, Level of expertise required, Meaningfully editable, Self sources. Hmmm. Maybe sometimes it’s clearer not to force category names into acronyms? Anyway, here’s how these helped.

Self-sourced, meaning the distribution format is the source code. This is especially relevant as the reason HELM sent the tweet that alerted me to their materials was that they are re-authoring material from Flash to HTML5. Aside from modern browser support, one big advantage of them doing this is that instead of having an impenetrable SWF package I had access to the assets that made the resource, notably the video clips.

Meaningfully editable: that access to the assets meant that I could edit the content, stringing the videos together, copying and pasting text from the transcript to use as questions.

Level of expertise required: I have found all the tools and services used (OpenShot, H5P, hypothes.is, WordPress) relatively easy to use, however some experience is required, for example to be familiar with various plugins available for WordPress and how to install them. Video editing in particular takes some expertise. It’s probably something that most people don’t do very often (I don’t).  Maybe the general level of digital literacy level we should now aim for is one where people are familiar with photo and video editing tools as well as text oriented word processing and presentation tools. However, I’m inclined to think that the details of using the H264 video codec and AAC audio codec, packaged in a MPEG-4 Part 14 container (compare and contrast with VP9 and ogg vorbis packaged in a profile of Matroska) should remain hidden from most people. Fortunately, standardisation means that the number of options is less than it would otherwise be, and it was possible to find many pages on the web with guidance on the browser compatibility of these options (MP4 and WebM respectively).

Access to editing tools, where access starts with low cost. All the tools used were free, most were open source, and all ran on Ubuntu (most can also run on other platforms).

It’s notable that all these ultimately involve open source software and open standards, and work especially well when then “open” for open standards includes free to implement. That complicated bit around MP4 & WebM video formats, that comes about because royalty requirements for those implementing MP4.

Open educational practice: nebulous but important.

Open education includes but is more than open education resources, open content, open licensing and open standards. It also means talking about what we do. It means that I found out about HELM because they were openly tweeting about their resources. I think that is how I learnt about nearly all the tools discussed here ina similar manner. Yes, “pimping your stuff” is importantly open. Open education also means asking questions and writing how-to articles that let non-experts like me deal with complexities like video encoding.

There’s a deeper open education at play here as well. See that resource from HELM that I started with? It started life in the RLO CETL, i.e. in a publicly funded initiative, now long gone. And the reason I and others in the UKHE know about Creative Commons and David Wiley’s analysis of open content, that largely comes down to #UKOER, again a publicly  funded initiative. UKOER and the stuff about open standards and open source was supported by Jisc, publicly funded. Alumni from these initiatives are to be found all over UKHE, through which these initiatives continue to be crucially important in building our capability and capacity to support learners in new and innovative settings.

 

The post Reflections on a little bit of open education (TL;DR: it works). appeared first on Sharing and learning.

Shared WordPress archive for different post types⤴

from @ Sharing and learning

In a WordPress plugin I have custom post types for different types of publication: books, chapters, papers, presentations, reports. I want one single archive of all of these publications.

I know that the theme template hierarchy allows templates with the pattern archive-$posttype.php, so  I tried setting the slug for all the custom post types to ‘presentations’. WordPress doesn’t like that.  So what I did was set the slug for one of the publication custom post types to ‘presentations’, that gives me a /presentations/ archive for that custom post type(1). I then edited the archive.php file to use a different  template parts for custom post types(2):

<?php $cpargs = array('_builtin' => False,
				  'exclude_from_search' => False);
	$custom_post_types = get_post_types( $cpargs, 'names', 'and' );
	if ( is_post_type_archive( $custom_post_types ) ) {
		get_template_part( 'archive-publication' );
	} else {
		get_template_part( 'archive-default' );
	}  
?>

See anything wrong with this approach? Any comments on how better to do this would be welcome.

Notes:
  1. 1 could edit the .htaccess file to redirect the /books/, /chapters/ …etc archives to /publications/, which would be neater in some ways but would make setting up the theme a bit of a faff.
  2. Yes, the code gives all the custom post types with an archive the same archive. That’s fixable if you make the array of post types for which you want a shared archive manually.

The post Shared WordPress archive for different post types appeared first on Sharing and learning.

Organising Pupil Content on Blogs⤴

from @ John's World Wide Wall Display

This is hopefully a useful tip for organising pupil created content on WordPress blogs like Glow Blogs.

Most of the content posed to blogs consists of posts or pages. Posts join the stream, pages are static generally accessed from menus.

This is another way to organise content that can be useful. Especially if several pupils are posting similar content at the same time. It helps organise that content and the early posters don’t get pushed away down the stream.

An Example Banton Birds

At school we are trying to pay attention to the local birdlife. We took part in the BIG BBC Bird watch with local Bird watchers, Mr & Mrs Carter. We started feeding the birds and trying to get some photos.

The pupils are doing a bit of research on the birds we saw (not too many it was a windy hour) and I hope they will continue over time adding other birds seen in the playground and around.

I want to organise these bits of research automatically collecting them together. To do this the pupils create, not posts or pages but a custom post type, project.

How it is done

This is just one way to do this but it is, at least on Glow Blogs, the most straightforward. It uses the JetPack Custom Content Types module and the unfortunately 1 named Portfolio Projects.

These projects are like pages in that they are out of the flow but like posts have Project Types (like categories) and Project Tags (like tags) that can be used to organise them. The also have a shortcode that can be used to create an index of the projects by type or tag2.

  1. Activate the Jetpack plugin.
  2. In Jetpack Settings Activate Custom Content Types.
  3. In Settings-> Writing Enable Portfolio Projects for this site
  4. Pupils create Projects for each item, add a project type (in this case Birds).

To create an index of these projects I add a page Banton Birds and add a shortcode to the page:

[portfolio include_type=birds display_types=false]

To make the index more visual the pupils make sure they have added a featured image to their posts. That automatically creates a thumbnail.

I’ve used this technique several times on blogs myself, including the Projects page on this blog. I’ve used it too to provide and organise photos and links on the Biggies blog for the pupils.

1. For Glow Blogs where we have a lot of pupil e-portfolios through a custom plugin.

2. You could do the same with pages using the hierarchy and the Display Posts Shortcode plugin, but not as easily.

WordPress twitter card idea⤴

from @ John's World Wide Wall Display

A little blue sky thinking, or borrowing some ideas from @davewiner & @mrkrndvs

I wonder if a WordPress plugin could ape pngWriter and create images for twitter cards with the text from the excerpt on the image used by twitter.
Like this, but with less fireworks.

I’ve been thinking about twitter again.

I think I’d have preferred twitter to be just text rather than being expanded to include all the media and ‘twitter cards’. I’d rather the reading flow would be twitter for short stuff and link to more visual or longer material out on your blog. That would perhaps make reading a little deeper and avoid the problem of folk just seeing the main point of an article and reacting to that 1.

But that cat left the bag a while ago. Now when I look at my twitter stream it is full of images. I occasionally use OneShot to grab and crop out interesting bits of text to share and surmount the 140 char limitation too.

I am not sure if this is a great idea

Recently I’ve watched Dave Winer experimenting with pngWriter (see the about page: About pngWriter). This creates images of blocks of text and sends them out in a tweet. It also creates an RSS feed of the text (pngWriter is not open for use at the moment).

This reminded me of how Aaron uses featured images in his blog: Creative Commons Starts with Making – A Reflection on Creating and Sharing – Read Write Respond

So I am kicking round a couple of ideas.

  1. If you used pngWriter you could pull the rss into your blog. You could do it in WordPress with the FeedWordPress plugin.
  2. A plugin could be made that would do the same sort of thing in WordPress, take the except text from a post and make an image for twitter from that.

Here is how I imagine that working

  1. Using an html5 canvas to automatically create an image of the post’s excerpt.
  2. Auto upload that to WordPress media library.
  3. Make it the featured image of the post

Alternatively (better?) make it the content of the twitter:image metatag for the post, that means that the featured image on the post would not have the text, visitors could read the post.

Or make a copy of the posts featured image, add the text and make that the twitter card image (I can imagine that might be different to get the text readable.).

For a couple of minutes I imagined that my babysteps php & JavaScript could put something like this together. Then reality kicked in. So I though I’d post it out here maybe someone else would think it would be a good idea.

    Three resources for custom metadata in WordPress⤴

    from @ Sharing and learning

    When developing WordPress for use as a CMS one approach I have used is to create a custom post type for each type of resource and custom metadata boxes for relevant properties of those types.  I’ve used that approach when exploring the possibility of using WordPress as a semantic web platform to edit schema.org metadata, when building course information pages for students and am doing so again in updating some work I did on WordPress as a lightweight repository.  Registering a custom post type is pretty straightforward, follow the example in the codex page, I found handling custom metadata boxes a little more difficult. Here are three resources that helped.

    Doing it long hand

    It’s a few years old, but I found Justin Tadlock’s Smashing Magazine article How To Create Custom Post Meta Boxes In WordPress really useful as a clear and informative tutorial. It was invaluable in understanding how metaboxes work. If I had only wanted one or two simple text custom metadata fields then coding them myself would be an option, but I found a couple of problems. Firstly, I was repeating the same code too many times. Secondly when I thought about wanting to store dates or urls or links to other posts, with suitable user interface elements and data validation, I could see the amount of code needed was only going to increase. So I looked to see whether any better programmers than I had created anything I could use.

    Using a helper plugin

    I found two plugins that promised to provide a framework to simplify the creation of metaboxes. These are not plugins that provide anything that the end user can see directly, rather they provide functions that can be used in theme an plugin development. They both reduce the work of creating a metabox down to creating an array with the properties you want the metabox to have. They both introduce a dependency on code I cannot maintain, which is something I am always cautious about in using third-party plugins, but it’s much more viable than the alternative of creating such code from scratch and maintaining it myself.

    CMB2 is “a metabox, custom fields, and forms library for WordPress that will blow your mind.” It is free and open source, with development hosted on GitHub.  It seems quite mature (version 1.0 was in Nov 2013), with a large installation base and decent amount of current activity on github.

    Meta Box is “a powerful, professional developer toolkit to create custom meta boxes and custom fields for WordPress.” It too is free and released under GPL2 licence, but there are paid-for extensions (also GPL2 licensed) and I don’t see any open source development (I may not have looked in the right place).  Meta box has been around for a couple of years, is regularly updated and has a very large user base. The paid-for extensions give me some hope that the developers have a sustainable business model, but a worry that maybe ‘free’ doesn’t include the one function that at sometime I will really need. Well, developers cannot live on magic beans so I wouldn’t mind paying.

    In the end both plugins worked well, but Meta Box allows the creation of custom fields for a link from one post to another, which I didn’t see in CMB2. That’s what I need for a metadata field to say that the author of the book described in one post is a person described in another.

    The post Three resources for custom metadata in WordPress appeared first on Sharing and learning.