PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 2.0.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v2.0.0
2.7.0 2.6.0 2.5.0 2.4.0 2.3.0 2.2.0 2.1.1 2.1.0 2.0.2 2.0.1 2.0.0 1.32.0 1.31.0 1.30.0 1.29.0 1.28.0 1.27.0 1.26.0 1.25.0 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.10.0 All 48 releases
thinkrank / includes / abilities / settings / class-get-llms-txt-settings.php

class-get-llms-txt-settings.php in ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO 2.0.0, at includes/abilities/settings/class-get-llms-txt-settings.php

146 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Get llms.txt settings ability.
4 *
5 * @package ThinkRank\Abilities\Settings
6 */
7
8 declare(strict_types=1);
9
10 namespace ThinkRank\Abilities\Settings;
11
12 use ThinkRank\Abilities\Ability_Base;
13 use ThinkRank\SEO\LLMs_Txt_Manager;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit; // Exit if accessed directly.
17 }
18
19 /**
20 * Retrieves ThinkRank llms.txt settings.
21 *
22 * These settings feed the AI-oriented llms.txt file describing the site to
23 * language models, stored via the LLMs_Txt_Manager SEO manager.
24 */
25 class Get_Llms_Txt_Settings extends Ability_Base {
26 /**
27 * Boolean-typed llms.txt keys.
28 */
29 private const BOOL_KEYS = [
30 'enabled',
31 'auto_generate',
32 ];
33
34 /**
35 * String-typed llms.txt keys.
36 */
37 private const STRING_KEYS = [
38 'site_name',
39 'website_description',
40 'key_features',
41 'target_audience',
42 'business_type',
43 'technical_stack',
44 'development_approach',
45 'setup_instructions',
46 'ai_context_custom',
47 'documentation_links',
48 'technical_links',
49 'optional_links',
50 'custom_sections',
51 ];
52
53 /**
54 * Constructor.
55 */
56 public function __construct() {
57 $this->id = 'thinkrank/get-llms-txt-settings';
58 $this->label = __( 'Get ThinkRank llms.txt Settings', 'thinkrank' );
59 $this->description = __( 'Retrieve ThinkRank llms.txt settings, which describe the site to AI language models via the llms.txt file.', 'thinkrank' );
60 }
61
62 /**
63 * {@inheritDoc}
64 *
65 * @return array<string, bool|float|string>
66 */
67 public function get_annotations() {
68 return [
69 'readonly' => true,
70 'destructive' => false,
71 'idempotent' => true,
72 'priority' => 1.0,
73 'openWorldHint' => false,
74 ];
75 }
76
77 /**
78 * Build the JSON schema properties for llms.txt settings.
79 *
80 * @return array<string, mixed>
81 */
82 private static function schema_properties() {
83 $props = [];
84
85 foreach ( self::BOOL_KEYS as $key ) {
86 $props[ $key ] = [ 'type' => 'boolean' ];
87 }
88 foreach ( self::STRING_KEYS as $key ) {
89 $props[ $key ] = [ 'type' => 'string' ];
90 }
91
92 return $props;
93 }
94
95 /**
96 * {@inheritDoc}
97 *
98 * @return array<string, mixed>
99 */
100 public function get_input_schema() {
101 return [
102 'type' => 'object',
103 'additionalProperties' => false,
104 'properties' => [],
105 ];
106 }
107
108 /**
109 * {@inheritDoc}
110 *
111 * @return array<string, mixed>
112 */
113 public function get_output_schema() {
114 return [
115 'type' => 'object',
116 'properties' => [
117 'settings' => [
118 'type' => 'object',
119 'properties' => self::schema_properties(),
120 ],
121 ],
122 ];
123 }
124
125 /**
126 * Execute ability.
127 *
128 * @param array<string, mixed> $input Ability input payload.
129 * @return array<string, mixed>
130 */
131 public function execute( $input ) {
132 $mgr = new LLMs_Txt_Manager();
133 $s = $mgr->get_settings( 'site', null );
134
135 $out = [];
136 foreach ( self::BOOL_KEYS as $key ) {
137 $out[ $key ] = (bool) ( $s[ $key ] ?? false );
138 }
139 foreach ( self::STRING_KEYS as $key ) {
140 $out[ $key ] = (string) ( $s[ $key ] ?? '' );
141 }
142
143 return [ 'settings' => $out ];
144 }
145 }
146