Skip to content

Latest commit

 

History

History
73 lines (62 loc) · 2.89 KB

06-wordpress-web3-theme.md

File metadata and controls

73 lines (62 loc) · 2.89 KB

Looking this example for wordpress theme or plugin :

<?php
//Build a wordpress web3 theme

//1. Register and enqueue styles
function Moßi_register_styles() {
  wp_enqueue_style('tailwind', 'https://cdn.tailwindcss.com/css/my-custom-tailwind.css');
  wp_enqueue_style('custom-style', get_template_directory_uri() . '/style.css', array('tailwind'), '1.0', 'all');
}
add_action('wp_enqueue_scripts', 'Moßi_register_styles');

//2. Register and enqueue scripts
function Moßi_register_scripts() {
  wp_enqueue_script('web3-connect', 'https://unpkg.com/web3modal@^1.9.0/dist/web3modal.min.js', array(), '1.9.0', true);
  wp_enqueue_script('ethers', 'https://cdn.ethers.io/lib/ethers-5.0.umd.min.js', array(), '5.0', true);
  wp_enqueue_script('custom-script', get_template_directory_uri() . '/js/custom.js', array('web3-connect', 'ethers'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'Moßi_register_scripts');

//3. Add web3 connect button and logic
function Moßi_web3_connect_button() {
  echo '<button id="web3-connect-button">Connect to Web3</button>';
}
add_action('wp_body_open', 'Moßi_web3_connect_button');

function Moßi_web3_connect_logic() {
  echo '<script>
    document.addEventListener("DOMContentLoaded", function() {
      const web3Modal = new Web3Modal.default({
        network: "mainnet",
        cacheProvider: true,
        providerOptions: {
          walletconnect: {
            package: WalletConnectProvider.default,
            options: {
              infuraId: "INFURA_ID"
            }
          }
        }
      });

      const connectButton = document.querySelector("#web3-connect-button");

      connectButton.addEventListener("click", async () => {
        const provider = await web3Modal.connect();
        const ethersProvider = new ethers.providers.Web3Provider(provider);
        const signer = ethersProvider.getSigner();
        console.log(signer);
      });
    });
  </script>';
}
add_action('wp_footer', 'Moßi_web3_connect_logic');

//4. Control panel by admin
//This would require more specific instructions on what the control panel needs to accomplish and what features it needs to have. 

//5. EXAMPLE: Create NFT marketplace
//5-1. Determine NFT solution
//Research and choose an NFT solution, like OpenSea, Rarible or SuperRare.
//Or design from scratch like -> https://github.com/mosi-arch/archive-sol/blob/main/Defi-Tips/nftVault721/Vault721.sol

//5-2. Integrate with WordPress
//Integrate the chosen NFT solution by installing and configuring its plugin or API.

//5-3. Design and develop marketplace UI
//Design custom templates using HTML and CSS, and set up functions to handle buying, selling, and viewing NFTs. 
//This would require more specific instructions on what features the marketplace needs to have.

In this example web3 connection created, you need to read section "5" .
Notice: don't use rpc was/has made by infura, cuz they are have censoreship for users...