Запустите программу, не возясь с functions.php внутренняя папка темы

#php #wordpress

#php #wordpress

Вопрос:

Я создаю свой собственный плагин для WordPress. Я сделал программу включения выключения следующим образом:

 require 'connection.php';
    $optionQuery = "SELECT * FROM wpex12_achan_plugin";
    $dataQuery = $connection->query($optionQuery);
    $data = array();
    if( mysqli_num_rows($dataQuery) ) {
        $data = $dataQuery->fetch_array(MYSQLI_ASSOC);
    };

    //option on off
    $option1 = array(
        'name' => 'option1',
        'options' => array(
            array(
                'text' => 'off',
                'value' => 0,
                'checked' => ($data['shareButton'] == 0) ? 'checked="checked"' : ''
                    ),
            array(
                'text' => 'on',
                'value' => 1,
                'checked' => ($data['shareButton'] == 1) ? 'checked="checked"' : ''
                    )
                )

            );

add_action("admin_menu", "addMenu");
function addMenu(){
    add_menu_page("Achan Plugin", "Achan Ganteng", 4, "example-options", "insideMenu", plugins_url('/image/icon.png',__FILE__));
}

function insideMenu(){
    global $connection, $option1, $dataQuery, $data;

    ?>
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
        </head>
        <body>  
        <h1>Welcome To Achan Custom Plugin</h1>
        <form action="" method="POST">
            <div class ="share-button">
                <label for="buttonshare">Share Social Widget inside Forum: </label> amp;nbsp
                <?php if(is_array($option1) amp;amp; $option1['options']) : ?>
                <?php foreach ($option1['options'] as $option) : ?>
                <label class="checkbox">
                    <input type="radio" name="<?php echo $option1 ['name'] ?>" value ="<?php echo $option['value'] ?>" <?php echo $option['checked'] ?> >
                    <span class="text"><?php echo $option['text'] ?></span>
                </label>
                <?php endforeach ?>
                <?php endif ?>
            
            </div>

            <br />
            <div class="submit">
                <input type="submit" value="Submit" name="submitClick" class="button">
            </div>
        
        </form>


        </body>
        </html>
    <?php
        //if submit clicked
        if(isset($_POST['submitClick'])){
            $getValue = isset ($_POST['option1']) ? $_POST['option1'] : 0;

            if(mysqli_num_rows($dataQuery)){
                $updateQuery = "UPDATE wpex12_achan_plugin SET shareButton = $getValue";
            }
            else{
                $updateQuery = "INSERT INTO wpex12_achan_plugin (shareButton) VALUES ($getValue)";
            }
            if(!$connection -> query($updateQuery)){
                echo ("Error description" . $mysqli -> error);
            }
            $connection -> close();
            header('Location: http://localhost/nameofweb/wp-admin/admin.php?page=example-options');    
        }
    }


?>
 

а также я сделал такой крюк:

 <?php
require 'connection.php';
    $optionQuery = "SELECT * FROM wpex12_achan_plugin";
    $dataQuery = $connection->query($optionQuery);
    $data = array();
    if( mysqli_num_rows($dataQuery) ) {
        $data = $dataQuery->fetch_array(MYSQLI_ASSOC);
    };

    add_action("bbp_theme_before_topic_author" , "insertSocialShare");
    function insertSocialShare(){
        global $data;
        if($data['shareButton']){
            echo "hello";
        }
     }

?>
 

Я знаю, что программа работает нормально, потому что я уже пробовал ее внутри functions.php внутри папки темы. Но я не хочу вставлять код в functions.php папка с темой. Я хочу запускать всю программу только в моей папке плагинов.

Я уже пытался, вставить код подключения, удалить require ‘connection.php ‘; и измените его на require functions.php вот так:

 require 'nameofweb/wp-content/themes/mythemes/functions.php';
 

Но не работает.

Ответ №1:

Сначала вы должны создать свой собственный плагин WordPress. Создайте новую папку внутри вашего wp-content/plugins/ каталога. Создайте PHP-файл с тем же именем, что и имя каталога, т.Е..

wp-content/plugins/my-first-plugin/my-first-plugin.php .

Теперь добавьте комментарий заголовка плагина в ваш недавно созданный php-файл. Это специально отформатированный комментарий к блоку PHP, который содержит метаданные о плагине, такие как его название, автор, версия, лицензия и т. Д. Вот пример:

 <?php
/**
 * Plugin Name: My First Plugin
 * Plugin URI: http://www.mywebsite.com/my-first-plugin
 * Description: The very first plugin that I have ever created.
 * Version: 1.0
 * Author: Your Name
 * Author URI: http://www.mywebsite.com
 */
 

Затем добавьте свой код ниже. После сохранения файла вы должны увидеть свой плагин в списке, и вы можете включить его на панели администратора. Включение вашего плагина позволит вам использовать ваши функции, действия и короткие коды в любом шаблоне WordPress.

Если вы собираетесь начать создавать собственные плагины, я настоятельно рекомендую вам ознакомиться с тем, как работают действия и фильтры, и какие из них доступны для использования в Кодексе API.


Руководство по плагинам также очень ценно для всего, что связано с плагинами WordPress.

Для взаимодействия с базой данных WP вы можете использовать $wpdb. Этот класс используется для взаимодействия с базой данных WordPress без необходимости использования необработанных инструкций SQL.

Комментарии:

1. А, понятно. Я нашел решение благодаря вашему ответу. Все, что мне нужно сделать, это создать functions.php , внутри functions.php есть много хуков WordPress, таких как add_action(). и require ‘функции. php’ внутри my-first-plugin.php . в двух словах, речь идет о WordPress по умолчанию. Код будет выполняться, если у него одинаковое имя, я имею в виду имя плагина папки и имя файла.