WordPress GitHub Syncをカスタマイズ、カスタム投稿タイプ追加

カスタマイズコードを修正しています。

WordPress GitHub Syncのカスタマイズを修正

テストサイトを作ってWordpress GitHub Syncでカスタム投稿を含めるテストをしていますが、にゃんきち日和の動作と違う点がありました。

MEMO
テスト環境はWordpressのマルチサイト(サブディレクトリ型)で、Markdow機能は、JetPackではなくJP Markdownプラグインを使っています。
テスト環境は作り直したりするので、JetPackは使っていません。導入しているプラグインも少ないです。また、GitHubにあるURLにアクセスしても、ユーザー名とパスワードを入れないと表示されません。

GitHubのファイル名に違いが発生しました。

テスト環境

  • postのファイル
    '日付'-'記事のタイトル'.md
  • pageのファイル
    '固定ページのslug'.md
  • カスタム投稿(maron)
    • ディレクトリ
      _'カスタム投稿名'
      日本語で見えます。
    • ファイル名
      '記事のタイトル'.md
      記事のタイトルは文字変換されている為、日本語で表示されません。
      URLに日本語を含めたのと同じように変換されています。

にゃんきち日和

  • postのファイル
    '日付'-post-'記事のID'.md
  • pageのファイル
    '固定ページのslug'.md

テスト環境の方の動作がプラグイン的には正しいのではないかと思います。
にゃんきち日和は、色々とカスタマイズしているのとプラグインが沢山入っているので相性により動きが違うのかもしれません。

GitHubのディレクトリ名、ファイル名に日本語を使わないようにします。

タイトルを英語にすれば、ファイル名もタイトルになるので管理しやすいのでしょうが、タイトルだけ英語というのも変ですからね。

WordPress GitHub Syncの対象にカスタム投稿タイプmaronを含める

プラグインの説明にあるようにwpghs-custom-filters.phpを追加します。
〜/wp-content/mu-pluginsにwpghs-custom-filters.phpを作成します。
(mu-pluginsフォルダーは無ければ作成します)

<?php
/**
 * Plugin Name:  WordPress-GitHub Sync Custom Filters
 * Plugin URI:   https://github.com/benbalter/wordpress-github-sync
 * Description:  Adds support for custom post types and statuses
 * Version:      1.0.0
 * Author:       James DiGioia
 * Author URI:   https://jamesdigioia.com/
 * License:      GPL2
 */
add_filter('wpghs_whitelisted_post_types', function ($supported_post_types) {
  return array_merge($supported_post_types, array(
    // add your custom post types here
    'maron'
    //'gistpen'
  ));
});

WordPress GitHub Syncのカスタマイズをfunctions.phpに追加します。

  • カスタム投稿タイプがmaronの場合に、ディレクトリ名をmaronにする。
  • 投稿タイプが固定ページの場合、ファイル名に日付を付加する。
  • 投稿タイプが固定ページ以外は、日付+投稿タイプ+ID にする。
MEMO
固定ページのslugは、日本語にしない前提です。
// ****** ここから、Wordpress GitHub Syncのカスタマイズ *******

// WordPress GitHub Syncのカスタム投稿ディレクトリ名変更
// 投稿タイプがmaronの場合、slugをディレクトリ名にする
function my_wpghs_directory_published($name, $my_this) {
    if ( 'publish' === $my_this->status() && 'maron' === $my_this->type() ) 
        $name =  '_' . $my_this->type() . '/';
    return $name;
 }
add_filter( 'wpghs_directory_published', 'my_wpghs_directory_published',10,2 );

// WordPress GitHub SyncのGitHubファイル名変更
// page -> 日付+name or 日付+タイトル に変更
// その他 ->日付+ポストタイプ+ID に変更
function my_wpghs_filename($filename, $my_this) {
    if ( 'page' === $my_this->type() ) {
        if ( '' !== $my_this->name() ) 
            $filename = get_the_time( 'Y-m-d-', $my_this->id ) . $my_this->name() . '.md';
        else
            $filename = get_the_time( 'Y-m-d-', $my_this->id ) . sanitize_title( get_the_title( $my_this->post ) ) . '.md';
    } else {
        $filename = get_the_time( 'Y-m-d-', $my_this->id ) . $my_this->type() . '-' . strval($my_this->post->ID) . '.md';
    }
    return $filename;
}
add_filter( 'wpghs_filename', 'my_wpghs_filename',10,2 );

// ****** ここまで、Wordpress GitHub Syncのカスタマイズ *******

ちなみに、にゃんきち日和のGitHubの投稿ファイル名がタイトルにならないのは謎のままです。

Monappy: MBDQ39VHypMQwfyR8SshuHvfPNUz321F6B

Monacoinを投げる
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?

コメントを残す

メールアドレスが公開されることはありません。