Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function register_relation_dynamic_tags($dynamic_tags_manager) {
- global $wpdb;
- $results = $wpdb->get_col("
- SELECT DISTINCT relation_key
- FROM {$wpdb->prefix}voxel_relations
- ");
- if (!empty($results) && !is_wp_error($results)) {
- foreach ($results as $relation_key) {
- $file_name = 'relation-' . sanitize_title($relation_key) . '-tag.php';
- $file_path = __DIR__ . '/dynamic-tags/' . $file_name;
- if (file_exists($file_path)) {
- require_once($file_path);
- $class_name = 'Elementor_Relation_' . str_replace('-', '_', sanitize_title($relation_key)) . '_Tag';
- if (class_exists($class_name)) {
- $dynamic_tags_manager->register(new $class_name());
- }
- }
- }
- }
- }
- add_action('elementor/dynamic_tags/register', 'register_relation_dynamic_tags');
- function create_relation_dynamic_tag_files() {
- global $wpdb;
- $results = $wpdb->get_col("
- SELECT DISTINCT relation_key
- FROM {$wpdb->prefix}voxel_relations
- ");
- if (!empty($results) && !is_wp_error($results)) {
- $dynamic_tags_dir = __DIR__ . '/dynamic-tags';
- if (!file_exists($dynamic_tags_dir)) {
- wp_mkdir_p($dynamic_tags_dir);
- }
- foreach ($results as $relation_key) {
- $file_name = 'relation-' . sanitize_title($relation_key) . '-tag.php';
- $file_path = $dynamic_tags_dir . '/' . $file_name;
- if (!file_exists($file_path)) {
- $class_name = 'Elementor_Relation_' . str_replace('-', '_', sanitize_title($relation_key)) . '_Tag';
- $content = "<?php
- if (!defined('ABSPATH')) {
- exit; // Exit if accessed directly
- }
- class {$class_name} extends \\Elementor\\Core\\DynamicTags\\Tag {
- public function get_name() {
- return 'relation-" . sanitize_title($relation_key) . "';
- }
- public function get_title() {
- return __('" . ucwords(str_replace('-', ' ', $relation_key)) . " Relation', 'your-text-domain');
- }
- public function get_group() {
- return 'post';
- }
- public function get_categories() {
- return ['text'];
- }
- protected function render() {
- global \$post, \$wpdb;
- if (!\$post) return;
- \$count = \$wpdb->get_var(\$wpdb->prepare(\"
- SELECT COUNT(*)
- FROM {\$wpdb->prefix}voxel_relations
- WHERE (parent_id = %d OR child_id = %d) AND relation_key = %s
- \", \$post->ID, \$post->ID, '{$relation_key}'));
- echo \$count !== null ? \$count : '0';
- }
- }";
- $result = file_put_contents($file_path, $content);
- if ($result === false) {
- error_log("Failed to create dynamic tag file: $file_path");
- }
- }
- }
- }
- }
- add_action('init', 'create_relation_dynamic_tag_files');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement