119 lines
3.9 KiB
PHP
119 lines
3.9 KiB
PHP
<?php
|
||
/**
|
||
* Plugin Name: WP Multi Wiki
|
||
* Plugin URI: https://github.com/M-Viper/wp-multi-wiki
|
||
* Description: Erstelle und verwalte mehrere Wikis – ideal für Plugin-Dokumentation. Mit Kategorien, Suche, TOC und mehr.
|
||
* Version: 1.0.0
|
||
* Author: M_Viper
|
||
* License: GPL v2 or later
|
||
* Text Domain: wp-multi-wiki
|
||
*/
|
||
|
||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||
|
||
define( 'WMW_VERSION', '1.0.0' );
|
||
define( 'WMW_PLUGIN_FILE', __FILE__ );
|
||
define( 'WMW_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
||
define( 'WMW_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
||
define( 'WMW_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
||
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-activator.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-post-types.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-admin.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-frontend.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-shortcodes.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-toc.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-search.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-ajax.php';
|
||
require_once WMW_PLUGIN_DIR . 'includes/class-wmw-gitea-importer.php';
|
||
|
||
register_activation_hook( __FILE__, array( 'WMW_Activator', 'activate' ) );
|
||
register_deactivation_hook( __FILE__, array( 'WMW_Activator', 'deactivate' ) );
|
||
|
||
function wmw_init() {
|
||
$post_types = new WMW_Post_Types();
|
||
$post_types->register();
|
||
|
||
if ( is_admin() ) {
|
||
$admin = new WMW_Admin();
|
||
$admin->init();
|
||
}
|
||
|
||
$frontend = new WMW_Frontend();
|
||
$frontend->init();
|
||
|
||
$shortcodes = new WMW_Shortcodes();
|
||
$shortcodes->register();
|
||
|
||
$search = new WMW_Search();
|
||
$search->init();
|
||
|
||
$ajax = new WMW_Ajax();
|
||
$ajax->init();
|
||
}
|
||
add_action( 'plugins_loaded', 'wmw_init' );
|
||
|
||
function wmw_flush_on_activation() {
|
||
if ( get_option( 'wmw_flush_rewrite' ) ) {
|
||
flush_rewrite_rules();
|
||
delete_option( 'wmw_flush_rewrite' );
|
||
}
|
||
}
|
||
add_action( 'init', 'wmw_flush_on_activation', 20 );
|
||
|
||
function wmw_action_links( $links ) {
|
||
$links[] = '<a href="' . admin_url( 'admin.php?page=wp-multi-wiki' ) . '">Wikis</a>';
|
||
$links[] = '<a href="' . admin_url( 'admin.php?page=wmw-settings' ) . '">Einstellungen</a>';
|
||
return $links;
|
||
}
|
||
add_filter( 'plugin_action_links_' . WMW_PLUGIN_BASE, 'wmw_action_links' );
|
||
|
||
// ── Global Helpers ────────────────────────────────────────────────────────────
|
||
|
||
function wmw_get_wikis( $args = array() ) {
|
||
$defaults = array(
|
||
'post_type' => 'wmw_wiki',
|
||
'post_status' => 'publish',
|
||
'posts_per_page' => -1,
|
||
'orderby' => 'title',
|
||
'order' => 'ASC',
|
||
);
|
||
return get_posts( wp_parse_args( $args, $defaults ) );
|
||
}
|
||
|
||
function wmw_get_articles( $wiki_id, $args = array() ) {
|
||
$defaults = array(
|
||
'post_type' => 'wmw_article',
|
||
'post_status' => 'publish',
|
||
'posts_per_page' => -1,
|
||
'orderby' => 'title',
|
||
'order' => 'ASC',
|
||
'meta_query' => array(
|
||
array(
|
||
'key' => '_wmw_wiki_id',
|
||
'value' => absint( $wiki_id ),
|
||
),
|
||
),
|
||
);
|
||
return get_posts( wp_parse_args( $args, $defaults ) );
|
||
}
|
||
|
||
function wmw_get_article_wiki_id( $article_id ) {
|
||
return (int) get_post_meta( $article_id, '_wmw_wiki_id', true );
|
||
}
|
||
|
||
function wmw_get_article_wiki( $article_id ) {
|
||
$wiki_id = wmw_get_article_wiki_id( $article_id );
|
||
return $wiki_id ? get_post( $wiki_id ) : null;
|
||
}
|
||
|
||
function wmw_get_wiki_icon( $wiki_id ) {
|
||
$icon = get_post_meta( $wiki_id, '_wmw_icon', true );
|
||
return $icon ? esc_html( $icon ) : '📖';
|
||
}
|
||
|
||
function wmw_get_wiki_color( $wiki_id ) {
|
||
$color = get_post_meta( $wiki_id, '_wmw_color', true );
|
||
return $color ? sanitize_hex_color( $color ) : '#2271b1';
|
||
}
|