タグ: customize

  • [WordPress] 自作プラグイン、Twenty Twentyテーマ幅の修正、子テーマのcontent.phpをいじる – △ID11199 [2020/03/01]

    [WordPress] 自作プラグイン、Twenty Twentyテーマ幅の修正、子テーマのcontent.phpをいじる – △ID11199 [2020/03/01]

    はじめに

    サイトの表示具合は、設定されているCSSを変更して自分好みに変更したり、自作のプラグインにCSSコードを埋め込んだり、色々と方法があるようです。CSSをいじる場合は、小テーマを作って、それを編集するようにします。子テーマを作る理由は、テーマのアップデートによって上書きされてしまうので、それを避けるためです。私も専門家ではありませんが、これからは、徐々にサイトの表示具合をカスタマイズしていきたいと思っていますが、その手法もいろいろあり、それらを学んで行こうと思います。

    自作プラグイン

    まだ、表示幅の埋め込みしかできていません。当サイトでしようしているTwenty Twentyテーマの投稿のデフォルト幅を、以下の手順で自作プラグインとしてインストールして、広くなるように設定できます。

    • 参考1からWordPressのTwenty Twentyテーマのデフォルトの投稿幅を広くするコードを、参考1のmy-plugin.phpの指定の箇所にコピペする
    • my-plugin.phpは、WordPressのブラインインとしてインストールできるようにパッケージされているので、ダウンロードしたファイルの組合せで、アップロードしてインストールする。
    • 以上の操作で、設定が反映される。

    参考1
    WordPress5.3 新デフォルトテーマ Twenty Twenty をチェックしています

    https://nendeb.com/819

    参考2
    WordPress (自分専用)マイ・プラグインを作ろう

    https://nendeb.com/1

    完成したプラグインのコード

    幅の修正のオリジナルは、functions.phpにグローバル変数として設定されており580px(下の「functions.php」を参照)でしたが、iPad Pro 11で閲覧して違和感のない広さに設定してみました。

    その設定では、860pxになっています。以下のコードのコメントには、オリジナルの値580pxを残していますが、実際の設定コードは860pxに変更しています。

    functions.php

    グローバル変数 $content_width

    	// Set content-width.
    	global $content_width;
    	if ( ! isset( $content_width ) ) {
    		$content_width = 580;
    	}
    

    my-plugin.php

    <?php
    /*
    Plugin Name: my-plugin
    Plugin URI:
    Description: My Plugin For WordPress.
    Version: 1.0.2
    Author: nendeb
    Author URI: http://nendeb.com/
    License: GPLv2 or later
    */
    
    
    // ここからコードをいれてください。
    
    // Start_01,WordPress Theme: Twenty Twenty の表示幅
    /* コンテンツ幅は 580px と だいぶ狭いなと思うので 簡単に変更できるかテストしてみました。
    公開画面と管理画面のCSS と $GLOBALS[‘content_width’] を上書きしてみます。
    */
    
    /*
     * 公開画面での Content幅を 860px へ変更する
     * @since Twenty Twenty 1.0
     * License: GPLv2 or later
     */
    function twentytwenty_org_style() {
        echo '<style>
        .section-inner.thin,
        .entry-content > *:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.is-style-wide){
            max-width: 86rem;
        }
        </style>';
    }
    add_action( 'wp_head', 'twentytwenty_org_style', 99 );
     
     
    /*
     * 管理画面での Content幅を 860px へ変更する
     * @since Twenty Twenty 1.0
     * License: GPLv2 or later
     */
    function twentytwenty_admin_style() {
        // Content幅 860 + 30 -> 860 + 0 : Admで確認した画面がUserの画面と異ならないようにした
        echo '<style>
        .wp-block {
            max-width: 860px;
        }
        .wp-block[data-align="wide"] {
            max-width: 860px;;
        }
        .wp-block[data-align="full"] {
            max-width: none;
        }
        </style>';
    }
    add_action( 'admin_print_styles', 'twentytwenty_admin_style', 99 );
     
     
    /*
     * content_width を 860px へ変更する
     * @since Twenty Twenty 1.0
     * License: GPLv2 or later
     */
    function twentytwenty_content_width() {
        // This variable is intended to be overruled from themes.
        $GLOBALS['content_width'] = 860;
    }
    add_action( 'after_setup_theme', 'twentytwenty_content_width', 0 );
    
    // End_01
    
    
    
    
    
    
    
    
    
    
    
    // ここまで
    
    
    if ( ! function_exists( 'nendebcom_hide_myplugin_updateplugin' ) ) :
    /*
     * サンプル
     * my-pluginの更新を非表示
     *
     * Note : https://nendeb.com/350
     */
    function nendebcom_hide_myplugin_updateplugin( $data ) {
    	if ( isset( $data->response['my-plugin/my-plugin.php'] ) ) {
    		unset( $data->response['my-plugin/my-plugin.php'] );
    	}
    	return $data;
    }
    add_filter( 'site_option__site_transient_update_plugins', 'nendebcom_hide_myplugin_updateplugin' );
    endif; // nendebcom_hide_myplugin_updateplugin
    
    
    
    
    
    if ( ! function_exists( 'nendebcom_plugin_last_load' ) ) :
    /*
     * サンプル
     * my-plugin を最後に読み込むようにする。
     * Note : https://nendeb.com/10
    */
    function nendebcom_plugin_last_load() {
    
        $this_activeplugin  = '';
        $this_plugin        = 'my-plugin/my-plugin.php';    //最後に読み込みたいプラグイン
        $active_plugins     = get_option( 'active_plugins' );
        $new_active_plugins = array();
    
        foreach ( $active_plugins as $plugins ) {
            if( $plugins != $this_plugin ){
                $new_active_plugins[] = $plugins;
            }else{
                $this_activeplugin = $this_plugin;
            }
        }
    
        if( $this_activeplugin ){
            $new_active_plugins[] = $this_activeplugin;
        }
    
        if( ! empty( $new_active_plugins ) ){
            update_option( 'active_plugins' ,  $new_active_plugins );
        }
    }
    add_action( 'activated_plugin', 'nendebcom_plugin_last_load' );
    endif; // nendebcom_plugin_last_load
    

    子テーマのfunctions.phpをいじる

    子テーマの作り方は、以下の関連記事をご参照ください。

    子テーマのディレクトリ直下にある「functions.php」に以下のコードを挿入します。

    functions.php

    • 子テーマ定義
    • 自動保存無効化
    • Headに(adsense)組み込み
      • AMP対応したページ/投稿には、headerにJavaScriptコードは使えません。挿入しても無効化されます。
    <?php
    add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
    function theme_enqueue_styles() {
      wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
      wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style')
      );
    }
    
    // 自動保存を無効にする処理
    function autosave_off() {
      wp_deregister_script('autosave');
    }
    add_action( 'wp_print_scripts', 'autosave_off' );
    // For no support to AMP, AMP do not allow insertion to Header
    // 以下は、<Head>と</head>の間にGoogle Adsenseコードを挿入
    // ただし、AMPでは、無秩序に挿入は許されないため、AMPを使用する場合は削除
    function km_script () {
     echo '<div><script data-ad-client="ca-pub-1277399675163968" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script></div>';
    }
    add_action( 'amp_post_template_head', 'km_script' );
    //
    
    ?>

    ログインしているときに処理する

    編集の最中に、投稿内容をブラウザで表示させて確認する場合、「編集」リンクを投稿の最初や最後の方に表示できると便利です。以下は、投稿の最初に表示させるカスタマイズです。同時に前後の投稿ナビゲーションも表示させます。

    content.phpに、以下のコードを挿入します。

    <?php if (is_user_logged_in()) : ?>
    
    	<div>
    	<?php
    	if ( is_single() ) {
    	
    		get_template_part( 'template-parts/navigation' );
    			
    	}
    
    		// 編集
    		edit_post_link();
    
    	?>
    	</div>
    
    <?php endif;?>
    

    完成した – content.php

    • 前後の投稿へのナビゲータ
    • 投稿の編集リンクの表示

    以下、完成した content.phpのコード

    <?php
    /**
     * The default template for displaying content
     *
     * Used for both singular and index.
     *
     * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
     *
     * @package WordPress
     * @subpackage Twenty_Twenty
     * @since 1.0.0
     */
    
    ?>
    
    <article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
    
    	<?php
    
    	get_template_part( 'template-parts/entry-header' );
    
    	if ( ! is_search() ) {
    		get_template_part( 'template-parts/featured-image' );
    	}
    
    	?>
    
    	<div>
    	<?php 
    	// 全ページに表示 : カテゴリメニュー
    	get_template_part( 'template-parts/info-course' );  
    	?>
    	</div>
    
    <?php if (is_user_logged_in()) : ?>
    
    	<div>
    	<?php
    	if ( is_single() ) {
    	
    		get_template_part( 'template-parts/navigation' );
    			
    	}
    
    		// 編集
    		edit_post_link();
    
    	?>
    	</div>
    
    <?php endif;?>
    
    
    
    	<div class="post-inner <?php echo is_page_template( 'templates/template-full-width.php' ) ? '' : 'thin'; ?> ">
    
    		<div class="entry-content">
    
    			<?php
    			if ( is_search() || ! is_singular() && 'summary' === get_theme_mod( 'blog_content', 'full' ) ) {
    				the_excerpt();
    			} else {
    				the_content( __( 'Continue reading', 'twentytwenty' ) );
    			}
    			?>
    
    		</div><!-- .entry-content -->
    
    	</div><!-- .post-inner -->
    
    	<div class="section-inner">
    		<?php
    		wp_link_pages(
    			array(
    				'before'      => '<nav class="post-nav-links bg-light-background" aria-label="' . esc_attr__( 'Page', 'twentytwenty' ) . '"><span class="label">' . __( 'Pages:', 'twentytwenty' ) . '</span>',
    				'after'       => '</nav>',
    				'link_before' => '<span class="page-number">',
    				'link_after'  => '</span>',
    			)
    		);
    
    		// 編集
    		edit_post_link();
    
    		// Single bottom post meta.
    		twentytwenty_the_post_meta( get_the_ID(), 'single-bottom' );
    
    		if ( is_single() ) {
    
    			get_template_part( 'template-parts/entry-author-bio' );
    
    		}
    		?>
    
    	</div><!-- .section-inner -->
    
    	<div>
    	<?php
    	?>
    	</div>
    
    	<?php
    
    	// 全ページに表示 : カテゴリメニュー
    	get_template_part( 'template-parts/info-course-end' );
    
    	if ( is_single() ) {
    
    		get_template_part( 'template-parts/navigation' );
    
    	}
    
    	/**
    	 *  Output comments wrapper if it's a post, or if comments are open,
    	 * or if there's a comment number – and check for password.
    	 * */
    	if ( ( is_single() || is_page() ) && ( comments_open() || get_comments_number() ) && ! post_password_required() ) {
    		?>
    
    		<div class="comments-wrapper section-inner">
    
    			<?php comments_template(); ?>
    
    		</div><!-- .comments-wrapper -->
    
    		<?php
    	}
    	?>
    
    </article><!-- .post -->
    

    Font-weight

    font-weightの値は、100から900まで100刻み(未確認、1刻みでも可能かもしれない)で設定できます。

    • 400 : 普通の太さ
    • 700 : bold
    • 普通文字を500すれば、見やすくななる(ブロガーさんの提案)

    https://masaa.net/2018/12/28/post-181227-4/

    編集履歴

    2020/04/08 文言整備、ソース記載、タイトル修正
    2020/05/01 文言整備
    2021/02/25 追記 (「はじめに」)

    関連記事(WordPress, Tag:customize)

  • [WordPress] author-bio の幅設定 – CSS for TwentyTwenty [工事中] 2020/02/26]

    [WordPress] author-bio の幅設定 – CSS for TwentyTwenty [工事中] 2020/02/26]

    CSSで表示の体裁をカスタマイズする

    以下の記事の内容は、不十分です。

    authorの表示幅の調整

    以下のコードは、content-widthを860に設定していることを前提にしています。

    Mobileは画面が小さいので、100%表示になっているはずですが、TabletやPCでは、幅が大きいので100%表示にしますが、見にくくなるため、通常1280pxある幅を860pxにして、画面幅をめいいっぱい使用した表示にならないように設定しています。

    以上の理由付は、とりあえずしているものの、完全に理解した上での設定値ではありません。

    設定を変更する場合は、バックアップをとってから行ってください。

    /* author-bio width for my_plugin*/
    .author-bio {
        width: 100%;
        margin: 0 auto;
        max-width: 860px;
    }
    

    関連記事

    はじめに サイトの表示具合は、設定されているCSSを変更して自分好みに変更したり、自作のプラグインにCSSコードを埋め込んだり、色々と方法があるようです。CSSをいじる場合は、小テーマを作って、それを編集するようにします…
    CSSで表示の体裁をカスタマイズする 以下の記事の内容は、不十分です。 authorの表示幅の調整 以下のコードは、content-widthを860に設定していることを前提にしています。 Mobileは画面が小さいので…
    親テーマと子テーマ いつまで続くか分からない当サイトの構築ですが、プラグインやphpファイルの変更など、他のblogerさんの記事を参考にさせてもらっていいます。 今回は、WordPressテーマ: Twenty Twe…
  • [WordPress] 親テーマを変更せずテーマをカスタマイズ – 子テーマを作り変更したを加える – 手始めは、content.phpの編集

    [WordPress] 親テーマを変更せずテーマをカスタマイズ – 子テーマを作り変更したを加える – 手始めは、content.phpの編集

    親テーマと子テーマ

    いつまで続くか分からない当サイトの構築ですが、プラグインやphpファイルの変更など、他のblogerさんの記事を参考にさせてもらっていいます。

    今回は、WordPressテーマ: Twenty Twentyを親テーマとして子テーマを作りました。

    テーマの編集

    作った子テーマが有効になっていれば、「テーマの編集」画面の右上にある「編集するテーマを選択」にその子テーマのリストが出てきます。図1のように、twentytwenty_child (この名前は、実質的にフォルダ名)があるので、このテーマが有効化していれば、表示されます。以下、図1の説明です。

    style.cssの編集

    表示の体裁を変更する場合は、style.cssのコードの変更、コードの追加が必要です。以下のコードは、当サイトの目次の体裁を定義したものです。

    /** 見出し
    */
    /* h2
    #contentを付けると左端に表示されるのが、幅に従った左端に改善できる
    */
    
    h1,
    .heading-size-1 {
    	font-size: 3.2rem;
    /*	font-weight: 800;
    	line-height: 1.138888889;
    */
    }
    
    h2 {
    	font-weight:600;
    	font-size:3.0rem;
    	color: #fff;
      background: #2a49a8;
      padding: 15px 30px;
    }
    h3 {
    	font-weight:500;
    	font-size:2.8rem;
    	/* 見出しの飾り */
      padding: 0.25em 0.5em;
      color: #2a49a8;
      background: transparent;
      border-left: solid 50px #2a49a8;
    }
    h4 {
    	font-weight:500;
    	font-size:2.6rem;
    /* 見出しの飾り */
    	border-bottom: solid 3px black;
    	
    }
    h5 {
    	font-weight:500;
    	font-size:2.4rem;
    /* 見出しの飾り */
    	/* border-bottom: solid 3px black; */
    	
    }
    
    h6 {
    	font-weight:500;
    	font-size:2.2rem;
    /* 見出しの飾り */
    	/* border-bottom: solid 3px black; */
    	
    }
    

    content.phpの編集

    表示の構造自体を変更する場合は、content.phpのコードの変更、コードの追加が必要です。

    content.phpが、WordPressにおける投稿や固定ページの表示を行っているメインのphpプログラムです。図1の例では、content(org).phpやcontent([番号])が、確認できると思います。

    これは、プログラミングに際し、僕が格闘した結果の残骸です。捨てられずに残しています。content(org).phpは、オリジナルファイルです。元に戻す場合は、このファイルをcontent.phpに名前を変更したして置き替えます。

    基本的に、子テーマでのこれらの修正は、親テーマの上書きになっているようです。

    ファイルの複製や名前の変更は、WordPressからはできません。端末ソフトを使ってサーバーに入り、コマンドにより名前を変更したり、複製したりする必要があります。

    当サイトでは、自宅のSynology NASにWordPressを導入しているので、Synology NASにログインして、DiskStation Managerのもとで、名前の変更、複製をします。その後、WordPressにログインして、「テーマの編集」画面に入れり、該当するするphpファイルのプログラムの内容を修正・追加していきます。

    修正した後は、左下にある更新ボタンで修正内容を保存します。その結果は、直ぐにblogに反映されるので、サイトをSafariやChromeで表示して確認します。

    このcontent.phpでのコードのミスは、即座に表示を崩していまうことを意味しますが、以下に記述したように元のコードに戻したり、追加したコードを削除して元に戻せば表示も元に戻ります。

    画面が崩しれたりした場合、「テーマの編集」画面から、Ctrl + zにより元に戻して、更新ボタンを押せば、元に戻ります。

    WP テーマ編集
    図1. content.phpの編集
    content.phpの編集と言っても、使用しているThemeごとに異なります。当サイトでは、WorpPress version 5以降で公式テーマになっているTwenty Twentyを使っています。標準のcontent.phpでは、表示のが味気ないので、coverタイプ (content-cover.php)をcontent.phpに置き換えています。同じTwenty Twentyのcontentではが、コードを確認してみるとだいぶ作りが異なっていました。

    functions.phpの編集

    オートセーブとリビジョン機能

    親テーマでは、標準で有効となっている編集時のオートセーブ機能とリビジョン機能ですが、子テーマの「functions.php」にコードを追加することで、無効化することが可能です。以下のリンクをご参照ください。

    macoblogさんより

    https://macoblog.com/wp-writing-autosave/

    まとめ

    親テーマと子テーマの関係性が、まだよくわかっていません。

    • 親テーマと子テーマは、themeフォルダに別フォルダで保管される。
      • 今回の場合、元からあった親テーマである「twentytwenty」と今回作ったフォルダとしての子テーマ「twentytwenty_child」を作りました
    • 編集するfunctions.phpやhead.phpなどのファイルを、親テーマからコピペしておく。
      • 同じ定義のものは、親テーマで定義されるので、小テーマでは削除します。ほとんどが削除されたになります。
    • 親テーマと子テーマの関わりをfunctions.phpに記載とておく。
      • 小テーマが使われるように定義 : 参照
    • 子テーマにない定義、値など
      • 親テーマの定義、値などを小テーマが引き継ぐ
    編集情報
    ID 7726
    2020/01/21 Mr.はりきり
    2020/07/23 追記(concent.phpの編集)

    以上