110 lines
4.0 KiB
PHP
110 lines
4.0 KiB
PHP
<?php
|
|
/******************************************************************************
|
|
New Plugin Name: Hangar tag pages and show tagged content in pages
|
|
New Plugin URI: https://git.hangar.org
|
|
New Description: Add tags to Pages, just as you would do with Posts
|
|
License: GPLv2 or later
|
|
|
|
*******************************************************************************
|
|
Adding tags to pages based on the work of:
|
|
Original Plugin Name: Tag Pages
|
|
Original Plugin URI: https://burobjorn.nl
|
|
Original WP Plugin URI: https://wordpress.org/plugins/tag-pages/
|
|
Original Version: 1.0.2
|
|
Original Author: Bjorn Wijers <burobjorn at burobjorn dot nl>
|
|
Original Author URI: https://burobjorn.nl
|
|
******************************************************************************/
|
|
|
|
/* Copyright 2012
|
|
Tag Pages is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
Tag Pages is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
|
|
/**
|
|
* Add the 'post_tag' taxonomy, which is the name of the existing taxonomy
|
|
* used for tags to the Post type page. Normally in WordPress Pages cannot
|
|
* be tagged, but this let's WordPress treat Pages just like Posts
|
|
* and enables the tags metabox so you can add tags to a Page.
|
|
* NB: This uses the register_taxonomy_for_object_type() function which is only
|
|
* in WordPress 3 and higher!
|
|
*/
|
|
|
|
// add tag and category support to pages
|
|
if( ! function_exists ('hangar_category_tags_support_all') ){
|
|
function hangar_category_tags_support_all()
|
|
{
|
|
register_taxonomy_for_object_type('post_tag', 'page');
|
|
register_taxonomy_for_object_type('category', 'page');
|
|
}
|
|
add_action('init', 'hangar_category_tags_support_all');
|
|
}
|
|
|
|
// ensure all pages are included in tag and category queries
|
|
if( ! function_exists ('hangar_category_tags_support_query') ){
|
|
function hangar_category_tags_support_query($wp_query) {
|
|
if ($wp_query->get('tag')) $wp_query->set('post_type', 'any');
|
|
if ($wp_query->get('category')) $wp_query->set('post_type', 'any');
|
|
}
|
|
add_action('pre_get_posts', 'hangar_category_tags_support_query');
|
|
}
|
|
|
|
/**
|
|
* Display all post_types on the tags archive page. This forces WordPress to
|
|
* show tagged Pages together with tagged Posts. Thanks to Page Tagger by
|
|
* Ramesh Nair: http://wordpress.org/extend/plugins/page-tagger/
|
|
*/
|
|
if( ! function_exists('hangar_tagpages_display_tagged_pages_archive') ){
|
|
function hangar_tagpages_display_tagged_pages_archive(&$query)
|
|
{
|
|
if ( !is_admin() && $query->is_archive && $query->is_tag ) {
|
|
$q = &$query->query_vars;
|
|
$q['post_type'] = 'any';
|
|
}
|
|
}
|
|
add_action('pre_get_posts', 'hangar_tagpages_display_tagged_pages_archive');
|
|
}
|
|
|
|
|
|
// show category using shortcode
|
|
// https://stackoverflow.com/a/13996873
|
|
if( ! function_exists('hangar_show_categoriced') ){
|
|
function hangar_show_categoriced()
|
|
{
|
|
add_shortcode('hangar-catlist', function($atts, $content) {
|
|
$atts += array('category' => 1);
|
|
$posts = get_posts("category={$atts['category']}");
|
|
|
|
foreach ($posts as $post) {
|
|
echo $post->post_name . '<br />';
|
|
}
|
|
});
|
|
//echo do_shortcode('[hangar-catlist category=5]');
|
|
}
|
|
}
|
|
if( ! function_exists('hangar_show_tagged') ){
|
|
function hangar_show_tagged()
|
|
{
|
|
add_shortcode('hangar-taglist', function($atts, $content) {
|
|
$atts += array('tag' => 1);
|
|
$posts = get_posts("tag={$atts['tag']}");
|
|
|
|
foreach ($posts as $post) {
|
|
echo $post->post_name . '<br />';
|
|
}
|
|
});
|
|
//echo do_shortcode('[hangar-taglist tag=5]');
|
|
}
|
|
}
|