質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.85%

  • WordPress

    6410questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • FTP

    300questions

    FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Wordpressブログ で子テーマを作成し、記事文中にAdsense広告が表示されるようにfunction.phpを編集するが表示されない

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 125

TAKEZO6

score 2

 前提・実現したいこと

Wordpress初心者です。

お忙しいところすみませんが、以下質問です。
1.自分で調べてみて他サイトを参考に「ad-in-body.php」ファイルを作成して、子テーマのfunction.phpの<?php以下に {「最初の見出しタグ(h2)」の前に自動で設置できるコード} を入れるということをやってみたのですが、なぜかうまくいきません。
(広告そのものが表示されない)

2.また、子テーマのfunction.phpには以前に上記とは別に、抜粋文の「...」の表記を「続きを読む」に変えて記事にリンクさせるためのリンクも入れてはいるのですが、そちらもうまくいきません。何かfunction.phpの記載方法が誤っているのか自分ではわからないため、アドバイスいただけますと助かります。

3.広告の上に表示されるはずの「スポンサーリンク」の言葉がなぜか文字化けしてしまいます。こちらも大変恐縮ですが、原因不明のため何かアドバイスいただけますと助かります。

情報不足でわかりづらいかもしれませんが、アドバイスなどいただけますと大変幸甚に存じます。

さらにFTPソフトで子テーマ中のcontent.phpを見ると必要なコードが記載されているのですが、Wordpressダッシュボードのテーマの編集⇒子テーマ⇒content.phpを見ると真っ白になってしまっています。(関係があるのか不明)

(4月13日 追記)
使い方よくわかっておらず大変失礼しました。

以下に子テーマのfunction.phpを貼り付けます。

また使用しているテーマはTwenty Twelveというものを使っており、子テーマを作成して編集しております。
https://ja.wordpress.org/themes/twentytwelve/

 発生している問題・エラーメッセージ

 該当のソースコード

<?php
/**
 * Sets the post excerpt length to 40 words.
 * 
 * To override this length in a child theme, remove the filter and add your own
 * function tied to the excerpt_length filter hook.
 */
function twentytwelve_excerpt_length( $length ) {
    return 40;
}
add_filter( 'excerpt_length', 'twentytwelve_excerpt_length' );

if ( ! function_exists( 'twentytwelve_continue_reading_link' ) ) :
/**
 * Returns a "Continue Reading" link for excerpts
 */
function twentytwelve_continue_reading_link() {
    return ' <a href="'. esc_url( get_permalink() ) . '">' . __( '続きを読む <span class="meta-nav">→</span>', 'twentytwelve' ) . '</a>';
}
endif; // twentytwelve_continue_reading_link

/**
 * Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and twentytwelve_continue_reading_link().
 *
 * To override this in a child theme, remove the filter and add your own
 * function tied to the excerpt_more filter hook.
 */
function twentytwelve_auto_excerpt_more( $more ) {
    return ' …' . twentytwelve_continue_reading_link();
}
add_filter( 'excerpt_more', 'twentytwelve_auto_excerpt_more' );

/**
 * Adds a pretty "Continue Reading" link to custom post excerpts.
 *
 * To override this link in a child theme, remove the filter and add your own
 * function tied to the get_the_excerpt filter hook.
 */
function twentytwelve_custom_excerpt_more( $output ) {
    if ( has_excerpt() && ! is_attachment() ) {
        $output .= twentytwelve_continue_reading_link();
    }
    return $output;
}
add_filter( 'get_the_excerpt', 'twentytwelve_custom_excerpt_more' );
?>

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); 

    function theme_enqueue_styles() 

    { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); 

} 

//H2見出しを判別する正規表現を定数にする
define('H2_REG', '/<h2.*?>/i');//H2見出しのパターン

//本文中にH2見出しが最初に含まれている箇所を返す(含まれない場合はnullを返す)
//H3-H6しか使っていない場合は、h2部分を変更してください
function get_h2_included_in_body( $the_content ){
  if ( preg_match( H2_REG, $the_content, $h2results )) {//H2見出しが本文中にあるかどうか
    return $h2results[0];
  }
}

function add_ads_before_1st_h2($the_content) {
  if ( is_single() ) {//固定ページも表示する場合はis_singular()にする
    ob_start();//バッファリング
    get_template_part('ad-in-body');//広告貼り付け用に作成したテンプレート
    $ad_template = ob_get_clean();
    $h2result = get_h2_included_in_body( $the_content );//本文にH2タグが含まれていれば取得
    if ( $h2result ) {//H2見出しが本文中にある場合のみ
      //最初のH2の手前に広告を挿入(最初のH2を置換)
      $count = 1;
      $the_content = preg_replace(H2_REG, $ad_template.$h2result, $the_content, 1);
    }
  }
  return $the_content;
}
add_filter('the_content','add_ads_before_1st_h2');

?>

 試したこと

エディターはTerapadを使っておりましたが、こちらの文字コードをUTF-8Nに変えたところ、Wordpressダッシュボード画面でみる各コードが真っ白になっているという現象は解決されました。

 補足情報(FW/ツールのバージョンなど)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2018/04/12 19:36

    質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。コード/エラー以外の本文はコードブロックに含めると改行されず、読みにくいため避けることをお勧めします。また、使用されているテーマは自作テーマでしょうか?それとも公開されているテーマでしょうか?後者の場合は入手先をリンクつきで質問文に追記してください。

    キャンセル

回答 1

+3

提示されている function.php に ?> が紛れており、それ以降のコードはPHPとして実行されません。とりあえずそれを直してから他の挙動について調べるようにしてください。

「真っ白になってしまっています」は、PHPでエラーが起こっているがエラーを表示しない設定になっているため白い、と言う状況だと思います。

【WordPress初心者におすすめ!デバッグモードの使い方 | Mignon Style】
http://mignonstyle.com/debug-mode/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 16:07

    kei344さん
    ご回答いただきまして有難うございます、また反応が遅れてしまい大変申し訳ありません。
    添付いただいたURLをもとに define('WP_DEBUG', true); というコードをFTPソフト(FileZilla)経由で変更してみたのですが、「エラーがブラウザに表示される」ということが起こりません。
    大変初歩的な質問で申し訳ないのですが、対応方法についてご教示いただけますと助かります。

    キャンセル

  • 2018/04/19 02:00

    「?>」は確認されましたか?

    下記記事に同じコードが載っていましたが、「ad-in-body.php」はテンプレートフォルダ内に有るのでしょうか。また、記事中にh2タグが含まれているのでしょうか。

    【アドセンスをWordPress記事本文中に配置できる手軽でスマートな方法】
    https://nelog.jp/adsense-before-h2

    get_template_part('ad-in-body');をテンプレートの記事ループ部分に入れて表示されるかどうかなど、ひとつずつ確認していくしかないと思います。

    キャンセル

  • 2018/04/19 15:52

    下記回答有難うございます。

    改めてデバックモードで確認すると以下のエラーメッセージが表示されておりました。

    public_html/wp-includes/functions.php on line 4031
    ただし、Function.phpを見ても、これが何を示しているエラーなのかがよくわからず。。。

    コメントいただいた件、「ad-in-body.php」は子テーマの中に作成済みです。

    また、アドセンスの入れるコードについては以下の記事中の記事本文中にアドセンスを自動で入れる という内容に沿って、設定しました。
    https://affiliate150.com/adsense-for-wordpress


    「?>」のコードについては、コメントいただいた後に、子テーマ中のコード途中にある「>?」を削除対応済みです。

    が、やはり子テーマのfunction.phpが機能せず、何も変わらない状況となってしまっております。。。
    どう対応したらいいものか、困ってしまっています。

    キャンセル

  • 2018/04/19 16:07

    なお、記事中にh2タグ(見出し2)が含まれている場合でもやはり記事は広告は表示されないようになってしまっています。

    キャンセル

  • 2018/04/19 16:17

    > 以下のエラーメッセージが表示されておりました
    エラーメッセージは正確に伝えないと意味がありませんよ。エラーの全文は提示の物だけでないはずです。どのページを見ているときにでたエラーなのかも質問文に追記されてはいかがでしょうか。

    キャンセル

  • 2018/04/26 15:46 編集

    エラーメッセージといったものはエラーメッセージではなく、Wordpressのダッシュボード上側に記載されている、非推奨の状況にあることを示すものだったようです。
    エラーが何かは表示されることがなく、いまだにどうしたらいいのかわかっていません。
    何度も何度も大変申し訳ないのですが、ご教示いただけると助かります。
    そもそも子テーマのfunction.phpの編集方法自体が何か根本的に間違えていたりするのでしょうか。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.85%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    6410questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • FTP

    300questions

    FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

  • トップ
  • FTPに関する質問
  • Wordpressブログ で子テーマを作成し、記事文中にAdsense広告が表示されるようにfunction.phpを編集するが表示されない