| | |
| | | <?php |
| | | namespace JVBase\managers\SEO; |
| | | |
| | | use JVBase\registrar\Registrar; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | | } |
| | |
| | | protected function getMetaFor(string $type): array |
| | | { |
| | | $default = $this->registry->getDefaultMetaValues(); |
| | | |
| | | // Check if content/taxonomy config has SEO meta defined |
| | | $configMeta = $this->getDefaultConfig($type, 'meta'); |
| | | if (!empty($configMeta)) { |
| | | $configMeta = $this->normalizeMetaKeys($configMeta); |
| | | $default = array_merge($default, $configMeta); |
| | | } |
| | | |
| | | return get_option($this->metaKey, $default); |
| | | } |
| | | |
| | | /** |
| | | * Normalize content-defined meta keys to system keys |
| | | */ |
| | | private function normalizeMetaKeys(array $meta): array |
| | | { |
| | | $map = [ |
| | | 'title' => 'metaTitle', |
| | | 'description' => 'metaDescription', |
| | | ]; |
| | | |
| | | $normalized = []; |
| | | foreach ($meta as $key => $value) { |
| | | $normalized[$map[$key] ?? $key] = $value; |
| | | } |
| | | return $normalized; |
| | | } |
| | | |
| | | /** |
| | | * Get default schema configuration for a type |
| | | */ |
| | | protected function getConfigFor(string $type): array |
| | |
| | | |
| | | default: |
| | | // Try to find in content, taxonomy, or user configs |
| | | $config = $this->findInConstants($type); |
| | | if (array_key_exists('seo', $config) && is_array($config['seo'])) { |
| | | $config = $config['seo']; |
| | | } |
| | | $registrar = Registrar::getInstance($type); |
| | | $config = $registrar->getConfig('seo'); |
| | | |
| | | // If asking for archive config and none exists, provide default |
| | | if ($configType === 'archive' && !isset($config['archive'])) { |
| | |
| | | return $config[$configType] ?? []; |
| | | } |
| | | } |
| | | /** |
| | | * Find configuration in JVB constants |
| | | */ |
| | | private function findInConstants(string $type): array |
| | | { |
| | | if (defined('JVB_CONTENT') && isset(JVB_CONTENT[$type])) { |
| | | return JVB_CONTENT[$type]; |
| | | } |
| | | if (defined('JVB_TAXONOMY') && isset(JVB_TAXONOMY[$type])) { |
| | | return JVB_TAXONOMY[$type]; |
| | | } |
| | | if (defined('JVB_USER') && isset(JVB_USER[$type])) { |
| | | return JVB_USER[$type]; |
| | | } |
| | | return []; |
| | | } |
| | | |
| | | public function resetConfig(): bool |
| | | { |