独自のショートコードを作りたい

2020年2月4日

このサイトでは、独自ユーザーテーブルプラグインを使う時、ユーザーログインフォームやユーザー登録フォームを固定ページに表示させる際、ショートコードを使用しています。

使用例

ここでは、記事コンテンツの中に

[my_shortcode_tag placeholder_username='例:hogehoge@hogehoge.com']

というショートコードを入れたときに自動的にフォームを表示させることができるショートコードを作ることにする。

<?php
//使用例
class HOGEHOGE {
    public function __construct() { 
        add_shortcode( 'my_shortcode_tag', array( &$this, 'my_custom_shortcode' )); 
    }
 
    public function my_custom_shortcode( $atts, $content = null, $tag = 'my_shortcode_tag' ) 
    { 
        /*
        まずはショートコードのデータを展開して一部をデフォルトとの値に上書きする
        shortcode_atts( $default_arr, $atts )関数では、
        送信されてきたパラメーター$attsの中からこの関数内で利用できる変数を$default_arrでフィルターをかけ
        かつ、$attsに値が無い場合、$default_arrで設定した値で上書きできる。

        今回は placeholder_usernameというパラメーターを使用する
        参考:
        shortcode_atts( array(
            ''      => 'ASC',
            'orderby'    => 'menu_order ID',
            'id'         => $post->ID,
            'itemtag'    => 'li',
            'icontag'    => 'dt',
            'captiontag' => 'dd',
            'columns'    => 3,
            'size'       => 'thumbnail',
            'include'    => '',
            'exclude'    => ''
        ), $atts);
        */
        extract( shortcode_atts( array('placeholder_username' => '' ) ) );
        $html =<<<EOI
<form id="wpmop-login-form" name="wpmop-login-form" method="post" action="" _lpchecked="1">
    <label for="wpmop_user_name" class="wpmop-label">メールアドレスでログイン</label><br>
    <input type="text" class="wpmop-text-field wpmop-username-field" placeholder="{$placeholder_username}" id="wpmop_user_name" value="" size="25" name="wpmop_user_name" ><br>
    <input type="password" class="wpmop-text-field wpmop-password-field" id="wpmop_password" value="" size="25" name="wpmop_password"><br>
    <input type="submit" class="wpmop-login-form-submit goups-btn" name="wpmop-login" value="ログイン">
</form>
EOI;

    return $html;
    }
     
}

解説

今回は、上のサンプルコードに直接解説したので省略。

Posted by webmaster