File: //proc/self/root/var/softaculous/sitepad/editor/site-data/plugins/siteseo-pro/main/llmtxtfile.php
<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/
namespace SiteSEOPro;
if(!defined('ABSPATH')){
die('Hacking Attempt !');
}
class LLMTxtFile{
static function init(){
global $siteseo;
add_filter('query_vars', function ($vars){
$vars[] = 'llm_txt';
return $vars;
});
}
static function add_rewrite_rules(){
add_rewrite_rule('^llms\.txt$', 'index.php?llm_txt=1', 'top');
flush_rewrite_rules();
}
static function handle_llm_requests(){
if(get_query_var('llm_txt') == 1){
self::generate_llm_txt();
exit;
}
}
static function generate_llm_txt(){
global $siteseo;
header('Content-Type: text/plain; charset=utf-8');
//SiteSeo
echo "<!-- Generated by SiteSeo -->\n\n";
// Site Title,
echo "# [" . esc_html(get_bloginfo('name')) . "](" . esc_url(home_url()) . ")\n";
$site_desc = !empty($siteseo->pro['llm_txt_web_desc']) ? $siteseo->pro['llm_txt_web_desc'] : get_bloginfo('description');
echo "> " . esc_html($site_desc);
$numberposts = !empty($siteseo->pro['llm_txt_limt']) ? (int) $siteseo->pro['llm_txt_limt'] : 10;
$post_types = !empty($siteseo->pro['llm_txt_posts']) ? $siteseo->pro['llm_txt_posts'] : [];
// Post Types
foreach($post_types as $post_type){
$posts = get_posts([
'post_type' => $post_type,
'post_status' => 'publish',
'number' => $numberposts,
'order' => 'DESC',
'orderby' => 'date',
'has_password' => false,
'no_found_rows' => true,
'meta_query' => [
[
'key' => '_siteseo_robots_index',
'compare' => 'NOT EXISTS'
]
]
]);
// Post Type Name
echo "\n\n## " . esc_html(ucfirst($post_type)) . "s";
foreach($posts as $post){
setup_postdata($post);
// Post Types (Built-in + Custom)
echo "\n- [**" . esc_html(get_the_title($post)) . "**](";
echo esc_url(get_permalink($post)) . ") : ";
echo esc_html(str_replace(" […]", "...", html_entity_decode(wp_strip_all_tags(get_the_excerpt($post)))));
}
wp_reset_postdata();
}
if(!empty($siteseo->pro['llm_txt_taxonomies'])){
echo "\n";
foreach($siteseo->pro['llm_txt_taxonomies'] as $taxonomy){
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => true,
'exclude' => [1],
'number' => $numberposts,
'meta_query' => [
[
'key' => '_siteseo_robots_index',
'compare' => 'NOT EXISTS',
]
]
]);
if(empty($terms) || is_wp_error($terms)){
continue;
}
if(!empty($terms)){
echo "\n## " . esc_html(ucwords(strtolower(str_replace(['-', '_'], ' ', $taxonomy)))) . "\n";
}
foreach($terms as $term){
echo "- [" . esc_html($term->name) . "](" .esc_html(get_term_link($term)). ")".(!empty($term->description) ? " : " . esc_html($term->description) : "") . "\n";
}
}
}
exit;
}
}