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

MEMO
まずは訂正です。
にゃんきち日和とテストサイトで動きが違うのは、モブログツールを使っているかどうかでした orz

JetPackのMarkdown機能かJP Markdownを使っていますので、使わない場合は動くかはわかりません。
functions.phpに追加したカスタマイズを修正しています。

WordPress GitHub SyncでのGitHubのディレクトリ名とファイル名について

カスタマイズしない場合、ディレクトリ名は、カスタム投稿名となります。
ファイル名は、投稿/固定ページのslug(無い場合はタイトル)となりますが、slugはURLエンコードされているため、日本語だと読めない文字列となります。また、カスタム投稿と固定ページにはファイル名に日付が入りません。

ディレクトリ名のカスタマイズ

カスタム投稿名が日本語の場合があるので、slugに変更します。

ファイル名のカスタマイズ

以下のようにカスタマイズしています。

  • slugがシングルバイトの場合
    日付+slug
  • slugがマルチバイトの場合
    日付+投稿タイプ+ID
  • slugが無い場合(無い場合ってあるんですかね?)
    • タイトルがシングルバイトの場合
      日付+タイトル
    • タイトルがマルチバイトの場合
      日付+投稿タイプ+ID

カスタマイズコード

WordPress GitHub Syncの対象にカスタム投稿タイプ(例としてmaron)を含める

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

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

// ****** ここから、Wordpress GitHub Syncのカスタマイズ *******

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

// WordPress GitHub SyncのGitHubファイル名変更
// slug シングルバイトコード -> 日付+name(slug) に変更
// slug マルチバイトコード ->日付+ポストタイプ+ID に変更
// slug が無くタイトルがシングルバイトコード -> 日付+title に変更
// slug が無くタイトルがマルチバイトコード ->日付+ポストタイプ+ID に変更
function my_wpghs_filename($filename, $my_this) {
    if ( '' !== $my_this->name() ) {
        $str = urldecode($my_this->name());
        if ( strlen( $str ) === mb_strlen( $str, "UTF-8") ) {
            $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 ) . $my_this->type() . '-' . strval($my_this->post->ID) . '.md';
        }
    } else {
        $str = get_the_title( $my_this->post );
        if ( strlen( $str ) === mb_strlen( $str, "UTF-8") ) {
            $filename = get_the_time( 'Y-m-d-', $my_this->id ) . sanitize_title( $str ) . '.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のカスタマイズ *******

Monappy: MBDQ39VHypMQwfyR8SshuHvfPNUz321F6B

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

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください