Nakkan Base

functions.phpへの書き込み

【WordPress】ダッシュボードのカスタム

管理画面(ダッシュボード)の「投稿」を「ブログ」に変えたいけど、どうすれば良いか?

検索して、一発で変えることに成功しました。

次のサイト様に感謝!

★WordPress管理画面の「投稿」を任意の名前に変更する方法

=functions.php=

function Change_menulabel() {
	global $menu;
	global $submenu;
	$name = 'ブログ';
	$menu[5][0] = $name;
	$submenu['edit.php'][5][0] = $name.'一覧';
	$submenu['edit.php'][10][0] = '新しい'.$name;
}

function Change_objectlabel() {
	global $wp_post_types;
	$name = 'ブログ';
	$labels = &$wp_post_types['post']->labels;
	$labels->name = $name;
	$labels->singular_name = $name;
	$labels->add_new = _x('追加', $name);
	$labels->add_new_item = $name.'の新規追加';
	$labels->edit_item = $name.'の編集';
	$labels->new_item = '新規'.$name;
	$labels->view_item = $name.'を表示';
	$labels->search_items = $name.'を検索';
	$labels->not_found = $name.'が見つかりませんでした';
	$labels->not_found_in_trash = 'ゴミ箱に'.$name.'は見つかりませんでした';
}

add_action( 'init', 'Change_objectlabel' );
add_action( 'admin_menu', 'Change_menulabel' );

【WordPress】「read more」を変更したい

これね…こんなことで時間をとるとは思わなかった。

<?php the_content('○○○'); ?>

「’◯◯◯’のところに’続きを読む’とか’もっと読む’とか入れるだけでしょ?」

そう思ってた。

え? 違うの?

なんか日本語を入れるとエラーになってWordPressに拒否される。

Codexの『「続きを読む」のカスタマイズ』に従ってもエラーが出た。

「続きを読む」の変更
「続きを読む」リンクに表示される語句をカスタマイズするには functions.php ファイルに次のコードを挿入します。

function modify_read_more_link() {
    return '<a class="more-link" href="' . get_permalink() . '">ここに続きを示す語句を挿入</a>';
}
add_filter( 'the_content_more_link', 'modify_read_more_link' );

万事休す。

でも次のサイト様のおかげで正しく表示されました。(救世主✨)

★「続きを読む」リンクのテキストや、囲むタグを自由に変更する

フィルターを利用して変更する

=functions.php=

function twpp_change_read_more_link() {
  $html = '<a href="' . esc_url( get_permalink() ) . '">全文を表示</a>';
  return $html;
}

add_filter( 'the_content_more_link', 'twpp_change_read_more_link' );

ついに、’read more’から’全文を表示’に変わってくれました😊

【WordPress】テーマカスタマイザーのカスタム作成

これは検索に困りましたよ💦

これ、何というんですかね?

ここに他のカスタム項目を付け加えたい。

下に「コントロール」と書いてあったから「WordPress コントロール カスタム」で検索したら、サーバーのコントロールパネルのことしか出てこないし(怒)

ようやく「WordPress 外観 カスタム」検索で何となくそれらしいサイト様をいくつか見つけることができました。

★WordPressの外観→カスタマイズに設定項目を追加する方法!

でも最後のファイルで読み込むところがちょっとよくわからない…😢

わからないけどもわからないなりに、とにかくやってみた。

そしたら、まあ、できたわけですね。

注・上の画像のサイトとは別サイトです。

この「スローガン」という項目を加えました。

中身は「スローガン1」と「スローガン2」と二つ設定できるようにしています。

=functions.php=

/* テーマカスタマイザーに設定項目を追加する */

function theme_customizer_extension($wp_customize) {

//セクション

$wp_customize->add_section( 'slogan', array (
  'title' => 'スローガン',
  'priority' => 100,
 ));

//テーマ設定

$wp_customize->add_setting( 'slogan1', array (
  'default' => '',
  ));

$wp_customize->add_setting( 'slogan2', array (
  'default' => '',
   ));
 
 //コントロールの追加

 $wp_customize->add_control( 'slogan1', array(
  'section' => 'slogan',
  'settings' => 'slogan1',
  'label' =>'スローガンの編集1',
  'description' => '',
  'type' => 'textarea',
  'priority' => 20,
  ));

  $wp_customize->add_control( 'slogan2', array(
    'section' => 'slogan',
    'settings' => 'slogan2',
    'label' =>'スローガンの編集2',
    'description' => '',
    'type' => 'textarea',
    'priority' => 20,
    ));

 }
 add_action('customize_register', 'theme_customizer_extension');

そして次は、get_theme_modという関数を使い、適応させたい箇所に記入していく。

この場合はhome.phpだった。

=home.php=

 <div class="slogan">

	<h2>○○○○</h2>

	 <p id="slogan1"><?php echo esc_html(get_theme_mod('slogan1', ''))?></p>

	 <p id="slogan2"><?php echo esc_html(get_theme_mod('slogan2', ''))?></p>

 </div>

まとめると、

・「add_section」でセクションを設定する。(「title」で項目名を指定。「priority」は小さいほど項目の上位に来る)

・「add_setting」で「id」を設定する。

・「add_control」でコントロールに追加される。(「type」でフォームを指定する)

この三つがポイントとなる感じ。

この機能はぜひマスターしたいところです。

★カスタマイザーのカスタマイズ方法!自由度の高いテーマ作りができるようになります

★【WordPress】テーマカスタマイザーを作成する

【WordPress】親テーマのrequire_onceで読み込んでいるファイルを子テーマで上書きする

「require_onceですでにファイルが読み込まれている場合、再読み込みをしない」というルールがある。

なので、親テーマで「require_once」が使ってある場合、子テーマでいくら新しいファイルを作ろうと上書きしてくれないのだ。

=親テーマのfunctions.php=

require_once( get_template_directory() . "/includes/core.php" );

上書きしたかったのは、やっぱり「日本語」で表示されてしまう問題。

これ、何とかならないのかな?

「メニュー」を「Menu」にしたい。

この部分は「include/core.php」で設定されていて、これを上書きするしか方法がない。

何時間も色々試してみたが結局うまくいかない。もう親テーマのままでいくしかないかと思っていた。

その時!

やっと方法を見つけた!

★「lib」フォルダにあるファイルを子テーマで編集したいのですが・・・ | CSSカスタマイズ相談 | Cocoon フォーラム

この方法は、新たに子テーマ内に「include/core.php」を作るのではなくて、全て子テーマのfunctions.phpに書き込む。

実際に変更したい関数の部分を全て書き出すのだ。

私の場合は、以下になる。 (親テーマのcore.phpは次ページ)

/*==============================

includes/core.phpの上書き

==============================*/
if ( ! function_exists( 'verbosa_header_section' ) ) :
function verbosa_header_section() { ?>
	<div id="sidebar">

		<header id="header" <?php cryout_schema_microdata('header') ?>>
			<nav id="mobile-menu">
				<?php cryout_mobilemenu_hook(); ?>
				<button type="button" id="nav-cancel"><i class="icon-cross"></i></button>
			</nav>
			<div id="branding" role="banner">
				<?php if ( has_nav_menu( 'primary' ) || ( true == cryout_get_option('verbosa_pagesmenu') ) ) { ?>
					<button type="button" id="nav-toggle"><span>&nbsp;</span></button>
				<?php } ?>
				<?php cryout_branding_hook();?>
				<?php cryout_headerimage_hook(); ?>
				<?php get_sidebar('before-menu'); ?>
				<?php if ( has_nav_menu( 'primary' ) || ( true == cryout_get_option('verbosa_pagesmenu') ) ) { ?>
					<nav id="access" role="navigation"  aria-label="Primary Menu" <?php cryout_schema_microdata('menu'); ?>>
						<h3 class="widget-title menu-title"><span>Menu</span></h3>
						<?php cryout_access_hook();?>
					</nav><!-- #access -->
				<?php } ?>

			</div><!-- #branding -->
		</header><!-- #header -->

		<?php get_sidebar('after-menu'); ?>
		<?php get_sidebar('conditional'); ?>
		<?php cryout_master_footer_hook(); ?>

		</div><!--sidebar-->
		<div id="sidebar-back"></div>
<?php }// verbosa_header_section
endif;

正直、最初は「変更したい関数」というのがさっぱりわからなかった。(変更したいのは「<span>Menu</span>」の部分だけ)

「verbosa_header_section()」がそうだとわかったので、その部分を書き出してみた。

大成功!

moreタグの[…] に苦労した件

moreタグを使うと、自動で[…] というのがつきますね。

これを普通に変更する場合、例えば「続きを読む」に変更したい場合、

<?php the_content('続きを読む'); ?>

のように、the_contentのカッコ内に書き加えれば良いし、また何も付けたくない場合は、

<?php the_content( '', false, '' ); ?>

と書けば良い。

でも、【Zubin】のテーマではオリジナルの設定があって、「…」がどうしても残ってしまう。

で、falseを入れると、残したい「続きを読む」まで消えてしまう。

ほんとに困った。

何時間も時間を浪費して、最後にコアファイルも含めてそれらしきファイルがないか探ってみることにした。

単純に「more_tag」で検索してみたところ、普通にZubinテーマのfunctions.phpに「more_tag_text」とその下に「return」という文字があり、ピン💡ときた。

return ' &hellip; ' . str_replace( $more_link_text, wp_kses_data( $more_tag_text ), $more_link );

この‘ &hellip; ‘ が絶対怪しい。

でこれは、まさに「 … 」の意味だった! ビンゴ!

このfunctionをまるっとコピーして子テーマのfunctions.phpに貼ったら、上の1行を書き換える。

return '' . str_replace( $more_link_text, wp_kses_data( $more_tag_text ), $more_link );

無事消えました✌️