Files
WordpressGitSync/oribi-tech-sync.php
Matt Batchelder d56d46490a Add post synchronization functionality for Markdown files
- Implemented a parser for YAML front-matter in Markdown files.
- Developed functions to convert Markdown content to HTML.
- Created a pipeline to sync WordPress posts from a specified folder in a Git repository.
- Added media import capabilities to handle images referenced in Markdown.
- Implemented author resolution and post slug generation.
- Included error handling and logging for sync operations.
- Enabled trashing of posts that are no longer present in the repository.
2026-02-21 10:44:34 -05:00

56 lines
2.8 KiB
PHP

<?php
/**
* Plugin Name: Oribi Tech Sync
* Description: Sync WordPress pages and theme files from a remote Git repository. Configure a repo URL + PAT, then sync on command via admin UI or REST API.
* Version: 1.0.0
* Author: Oribi Technology Services
* Requires at least: 6.0
* Requires PHP: 7.4
*/
if ( ! defined( 'ABSPATH' ) ) exit;
define( 'ORIBI_SYNC_VERSION', '1.0.0' );
define( 'ORIBI_SYNC_DIR', plugin_dir_path( __FILE__ ) );
define( 'ORIBI_SYNC_URL', plugin_dir_url( __FILE__ ) );
define( 'ORIBI_SYNC_BASENAME', plugin_basename( __FILE__ ) );
// ─── Includes ─────────────────────────────────────────────────────────────────
require_once ORIBI_SYNC_DIR . 'includes/crypto.php';
require_once ORIBI_SYNC_DIR . 'includes/api-client.php';
require_once ORIBI_SYNC_DIR . 'includes/sync-engine.php';
require_once ORIBI_SYNC_DIR . 'includes/push-client.php';
require_once ORIBI_SYNC_DIR . 'includes/post-sync.php';
require_once ORIBI_SYNC_DIR . 'includes/admin.php';
require_once ORIBI_SYNC_DIR . 'includes/rest.php';
require_once ORIBI_SYNC_DIR . 'includes/theme-preview.php';
// ─── Activation / Deactivation ────────────────────────────────────────────────
register_activation_hook( __FILE__, 'oribi_sync_activate' );
register_deactivation_hook( __FILE__, 'oribi_sync_deactivate' );
function oribi_sync_activate() {
// Ensure default options exist
add_option( 'oribi_sync_repo', '', '', 'no' );
add_option( 'oribi_sync_branch', 'main', '', 'no' );
add_option( 'oribi_sync_provider', '', '', 'no' );
add_option( 'oribi_sync_pat', '', '', 'no' );
add_option( 'oribi_sync_last_run', '', '', 'no' );
add_option( 'oribi_sync_log', [], '', 'no' );
add_option( 'oribi_sync_posts_enabled', '', '', 'no' );
add_option( 'oribi_sync_posts_folder', 'posts', '', 'no' );
}
function oribi_sync_deactivate() {
wp_clear_scheduled_hook( 'oribi_sync_cron_run' );
}
// ─── Uninstall (static, called by WP) ─────────────────────────────────────────
// See uninstall.php for full cleanup.
// ─── Plugin action links ──────────────────────────────────────────────────────
add_filter( 'plugin_action_links_' . ORIBI_SYNC_BASENAME, function ( $links ) {
$links[] = '<a href="' . esc_url( admin_url( 'options-general.php?page=oribi-sync' ) ) . '">Settings</a>';
return $links;
} );