@spliffpage

Что не так с данным плагином?

Привет всем.
Пишу плагин для Wordpress. Но с данной CMS особо опыта не имел, по этому и прошу помощи здесь.
Задача элементарная.

Что должен делать плагин? Просто вставлять между ... при отправке формы, где он по сути указывает свой ID. И после этого по всему сайту прописывается вызов одного JavaScript-файла. Но я подпис на моменте записи в wp_head(). Некоторые вообще говорят что это нереально, можно только через функции делать, но я то видел подобные плагины, по этому думаю они где-то ошиблись.

КОД ПЛАГИНА (ВСЕГО 1 ФАЙЛ):
<?php
/**
Plugin Name: Plugin Name
Plugin URI: https://example.com
Description:  Description of this plugin
Version: 1.0
Author: ExampleDeveloper
Author URI: https://example.com
License: GPLv2
Text Domain: test-plugin
*/

function CreateNavigationMenu() {
	$menuname = __('EditHead Plugin', 'test-plugin');
	add_options_page( $menuname, $menuname, 'manage_options', 'test-plugin', 'TestPluginSettings' );
}

function TestPluginSettings() {
	if ( !current_user_can( 'manage_options' ) )  {
            wp_die( __( 'You do not have permissions to access this page.' ) );
	}
	TestViewPlugin();
}

function TestViewPlugin() {
    
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    
        add_action("wp_head", "AddMyJSCode", 1000);
        echo"Ok";

    }
    
    echo'<form method="post" action="">
                <input type="text" name="Public" size="35"><br>
                <input type="submit" class="button button-primary" value="Add" style="margin-top:15px">
            </form>';
    
}

function AddMyJSCode() {
    echo'<script type="text/javascript" charset="utf-8" src="http://example.com/js/script-'.$_POST['Public'].'.js"></script>';
}

add_action( 'admin_menu', 'CreateNavigationMenu' );
?>


По идее все верно, но почему он не прописывает
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Привет.

Записать в wp_head ничего нельзя, это просто хук, который вызывает все прикрепленные функции. Понятие хуков достаточно подробно разобрано в интернетах.

Я бы рекомендовал сгенерировать страницу настроек с помощью механизмов WordPress. Это проще, чем делать свой вариант.

По поводу реализации. При отправке формы сохраняете её значение в базу. Если сделаете по документации — будет само сохраняться, если нет, то есть функции add_option и update_option.

Затем при загрузке станицы проверяете значение Ваших опций, если всё на месте — подключаете файл. По быстрому на коленке, примерно так:
function wpdocs_scripts_method() {
    $public = get_option('your_plugin_public');
    wp_enqueue_script( 'custom-script', 'http://example.com/js/script-'.$public.'.js' );
}
if(get_option('your_plugin_public')) {
    add_action( 'wp_enqueue_scripts', 'wpdocs_scripts_method' );
}


Пример плагина со схожими функциями.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы