[Shopify][JavaScript]住所編集の国で都道府県更新

Liquid(HTML)

国<select name="address[country]" {% if form.country != blank %}data-default-label="{{ form.country }}{% else %}data-default="Japan{% endif %}">{{ country_option_tags }}</select><br>
都道府県<select name="address[province]" data-default-label="{{ form.province }}"></select>

JavaScript

document.querySelectorAll('[name="address[country]"]').forEach((elm,index)=>{
    elm.addEventListener('change',(e)=>{
        onChangeCountry(e);
    });
});
onChangeCountry(e){
    const option = e.target.querySelector('[value="'+e.target.value+'"]');
    const provinceSelect = e.target.form.querySelector('[name="address[province]"]');
    if(option && provinceSelect){
        let options = [];
        const provinces = JSON.parse(option.dataset['provinces']);
        provinces.forEach((province,index)=>{
            options.push('<option value="'+province[0]+'">'+province[1]+'</option>');
        });
        provinceSelect.innerHTML = options.join('');
    }
}

[JavaScript]ファイルサイズ取得

const options = {
   method  : "HEAD"
};
fetch(elm.href,options)
    .then((response)=>{
        if (!response.ok) {
            throw new Error();
        }
        return response;
    })
    .then((response)=>{
        const fileSize = response.headers.get("Content-Length");
        if(fileSize) {
            console.log(fileSize);
        }else{
            throw new Error();
        }
    })
    .catch((error)=>{
    });

[WordPress]MW WP Formの問い合わせデータ表示順指定カスタムフィールド追加

functions.phpに下記を追記

// カスタムフィールドボックス[問い合わせデータの表示順]
function add_mw_order_fields() {
    //add_meta_box(表示される入力ボックスのHTMLのID, ラベル, 表示する内容を作成する関数名, 投稿タイプ, 表示方法)
    add_meta_box( 'mw_order_setting', '問い合わせデータの表示順', 'insert_mw_order_fields', 'mw-wp-form', 'normal');
}
add_action('admin_menu', 'add_mw_order_fields');
// カスタムフィールドの入力エリア[問い合わせデータの表示順]
function insert_mw_order_fields() {
    global $post;
    echo '<div><input style="width: 100%;" type="text" name="mw_order" value="'.get_post_meta($post->ID, 'mw_order', true).'" size="50" placeholder=""/></div>';
}
// カスタムフィールドの値を保存[問い合わせデータの表示順]
function save_mw_order_fields( $post_id ) {
    if(!empty($_POST['mw_order'])){
        update_post_meta($post_id, 'mw_order', $_POST['mw_order'] );
    }else{
        delete_post_meta($post_id, 'mw_order');
    }
}
add_action('save_post', 'save_mw_order_fields');
// カスタムフィールドの値による問い合わせデータ表示順設定
function my_mwform_inquiry_data_columns( $columns ) {
    if(empty($_GET['post_type']) || strpos($_GET['post_type'],'mwf_') === false){
        return $columns;
    }
    $tmp = explode('_',$_GET['post_type']);
    if(count($tmp) < 2 || !is_numeric($tmp[1])) {
        return $columns;
    }
    $meta = get_post_meta($tmp[1],'mw_order',true);
    if (empty($meta)) {
        return $columns;
    }
    $order = explode(',',$meta);
    $result = [];
    foreach ($order as $key => $value){
        if(empty($value))continue;
        $result[$value] = $value;
    }
    return $result;
}
// フィルターフックの要否を判定し必要なら処理を設定する
if(!empty($_GET['post_type']) && strpos($_GET['post_type'],'mwf_') === 0){
    $tmp = explode('_',$_GET['post_type']);
    if(1 < count($tmp) && is_numeric($tmp[1])) {
        $meta = get_post_meta($tmp[1], 'mw_order',true);
        if (!empty($meta)) {
            add_filter('mwform_inquiry_data_columns-mwf_' . $tmp[1], 'my_mwform_inquiry_data_columns');
        }
    }
}

 
追加されたカスタムフィールドへnameをカンマ区切りで入力する。

[PHP]idiorm #8 save

$record = ORM::for_table($this->table_name)->where('id', $id)->find_one();
if(empty($record)){
    return false;
}
foreach ($data as $key => $value){
    $record->set($key,$value);
}
$result = $record->save();

[MovableType]BlockEditorBlocks基本

<mt:EntryFlag flag="convert_breaks" setvar="entry_flag">
<mt:If name="entry_flag" eq="block_editor">
    <mt:SetVarBlock name="_block_editor"><mt:EntryBody convert_breaks="0"><mt:EntryMore convert_breaks="0"></mt:SetVarBlock>
    <mt:BlockEditorBlocks name="_block_editor">
        <mt:If name="type" eq="custom-title">
            //処理
        <mt:ElseIf name="type" eq="custom-h4">
            //処理
        </mt:If>
    </mt:BlockEditorBlocks>
<mt:Else>
    <mt:EntryBody>
    <mt:EntryMore>
</mt:If>

[MovableType]数値切り上げ

<mt:Var name="target" regex_replace="/^\-?\d+\.(\d*)$/","$1" setvar="_one_tenth">
<mt:Var name="target" regex_replace="/^(\d+)\.\d+$/","$1" setvar="_result">
<mt:If name="_one_tenth" ne="$target">
    <mt:If name="_one_tenth" gt="0">
        <mt:SetVar name="_result" op="+" value="1">
    </mt:If>
</mt:If>

[JavaScript]getRGBAByHex

getRGBAByHex(hex,alpha){
    if (hex.slice(0,1) == "#")hex = hex.slice(1) ;
    if (hex.length == 3)hex = hex.slice(0,1) + hex.slice(0,1) + hex.slice(1,2) + hex.slice(1,2) + hex.slice(2,3) + hex.slice(2,3);
    let rgb = [hex.slice(0,2),hex.slice(2,4),hex.slice(4,6)].map(function(str){
        return parseInt(str,16);
    });
    return `rgba(${rgb[0]},${rgb[1]},${rgb[2]},${alpha})`;
}

[JavaScript]canvas.clip

animate() {
    requestAnimationFrame(()=>{
        this.animate();
    });
    const ctx;
    ctx = canvas.getContext('2d');
    ctx.globalCompositeOperation = "source-over";
    ctx.globalAlpha = 1.0;
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.beginPath();
    ctx.rect(0,0,canvas.width,100);
    ctx.clip();
    //ここに描画処理
    ctx.restore();
}