超簡単!WordPressの記事中に広告を差し込む

記事中の任意の場所に広告を掲載

functions.phpに広告用のショートタグを登録しておくと、タグを打った場所に広告を表示させられます。

function ads() {
    if (wp_is_mobile()) {
        return <<< EOM
            // 携帯用レスポンシブ広告コード
EOM;
    } else {
        return <<< EOM
            // パソコン用広告コード
EOM;
    }
}
add_shortcode('ads', 'ads');

記事中に[ads]と書けば、その場所に広告が表示されます。

記事中に自動挿入させる

functions.phpで記事表示フィルタに置換処理を追加します。記事を書く時に広告の事を意識せずに済むので大変便利です。上記のads関数を流用します。

function insert_ads_for_single($the_content) {
    if (is_single()) {
        $tag = '</p>';
        return preg_replace("|$tag|", $tag . ads(), $the_content, 3);
    }
    return $the_content;
}
add_filter('the_content', 'insert_ads_for_single');

段落のあとに広告を追加する処理を3回行います。見出し直後に広告を配置するのはGoogle的に良くないそうです。

UIViewControllerの経路を判別する

とあるViewControllerをモーダルでもナビゲーションでも使いたい時に、その経路を判別したいことがあります。例えば、再表示の時だけ再描画したいとか・・・。

表示する時

viewDidLoad、view~LayoutSubviewsでは残念ながら使えません。
view~Appearで判別できます。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if ([self isBeingPresented]) {
        // presentViewControllerされました。
    } else if ([self isMovingToParentViewController]) {
        // pushViewControllerされました。
    }
}

戻る・閉じる時

view~Disappearで判別できます。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    if ([self isBeingDismissed]) {
        // dismissViewControllerされました。
    } else if ([self isMovingFromParentViewController]) {
        // popViewControllerされました。
    }
}

注意

isBeingがモーダル、isMovingがナビゲーション、となっています。
ただし、ナビゲーションコントローラ自体をpresentしてモーダル表示した場合は、[self.navigationController isBeing~];
にしないと、該当VCからでは判別できないので注意してください。

以上をふまえて判別メソッドをつくる

このVCが新たに表示される時かどうか

- (BOOL)isMovingToVisibleViewController {
    if (self.navigationController == nil) {
        return [self isBeingPresented];
    }
    return [self.navigationController isBeingPresented] || [self isMovingToParentViewController];
}

このVCが無くなる時かどうか

- (BOOL)isMovingFromVisibleViewController {
    if (self.navigationController == nil) {
        return [self isBeingDismissed];
    }
    return [self.navigationController isBeingDismissed] || [self isMovingFromParentViewController];
}

iOS 9.2