' . __('Topic SEO Content Optimization Tool', 'usetopic-plugin') . '
';
$html .= '
';
$html .= '';
$html .= '
';
$html .= '';
echo $html;
}
/**
* Function to find the file path for index.[hash].js or index-classic.[hash].js
* @param string $filePattern - The file pattern to search for (e.g., 'index' or 'index-classic')
* @param string $directory - The directory where the build files are located
* @return string|null - Returns the full file path or null if not found
*/
public function getHashedFilePath($filePattern, $directory = 'build')
{
// Get the full path to the plugin directory
$plugin_dir = plugin_dir_path(__FILE__);
$full_directory_path = $plugin_dir . $directory;
if (!is_dir($full_directory_path)) {
return null;
}
// Define the regex pattern to match files like index.[hash].js or index-classic.[hash].js
$pattern = sprintf('/^%s\.[a-f0-9]{8}\.js$/', preg_quote($filePattern, '/'));
// Scan the directory for files
$files = scandir($full_directory_path);
// Iterate through the files to find a match
foreach ($files as $file) {
if (preg_match($pattern, $file)) {
// Return the relative path of the matched file
return $directory . '/' . $file;
}
}
// If no match was found, return null
return null;
}
public function topic_enqueue_assets()
{
$index_file_path = $this->getHashedFilePath('index');
if ($index_file_path === null) {
$index_file_path = 'build/index.js';
}
wp_enqueue_script(
'topic-gutenberg-sidebar',
plugins_url($index_file_path, __FILE__),
array('wp-plugins', 'wp-edit-post', 'wp-i18n', 'wp-element'),
null
);
wp_enqueue_style('topic-sidebar-global', plugins_url('build/index.css', __FILE__), array(), 'all');
}
public function topic_enqueue_assets_classic()
{
$index_file_path = $this->getHashedFilePath('index-classic');
if ($index_file_path === null) {
$index_file_path = 'build/index-classic.js';
}
wp_enqueue_script(
'topic-gutenberg-sidebar-classic',
plugins_url($index_file_path, __FILE__),
array('wp-plugins'),
null
);
wp_enqueue_style('topic-classic-sidebar', plugins_url('classic-editor/classic.css', __FILE__), array(), 'all');
wp_enqueue_style('topic-sidebar-global', plugins_url('build/index.css', __FILE__), array(), 'all');
}
public function useTopicSeo_sidebar_box($data)
{
echo '
' . __('Topic SEO Content Optimization Tool', 'usetopic-plugin') . '
';
}
public function get_permalink_for_post_id()
{
if (isset($_POST['post_id'])) {
$post_id = $_POST['post_id'];
$permalink = get_permalink(intval($post_id));
wp_send_json([
'permalink' => $permalink
]);
}
wp_die();
}
public function search_posts()
{
if (isset($_POST['s'])) {
$s = $_POST['s'];
global $wpdb;
$myposts = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' AND post_title LIKE '%s'", '%' . $wpdb->esc_like($s) . '%'));
$post_array = array();
foreach ($myposts as $mypost) {
// $post = get_post($mypost);
$permalink = get_permalink(intval($mypost->ID));
$mypost->permalink = $permalink;
$mypost->post_content = "";
array_push($post_array, $mypost);
}
wp_send_json([
'posts' => $post_array
]);
}
wp_die();
}
}
$wpUseTopic = new useTopicSeo();