oficinasuport-wp-plugin/includes/hangar-tags-and-pages.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]');
}
}