it-swarm-ja.com

init中にis_archiveをチェックする必要があります

私のプラグインがいくつかのURI操作をする前に、私はページがアーカイブかどうかをチェックする必要があります。これらの操作はwpname__の前でのみ機能しますが、最初に実行してからis_archiveをチェックすると、チェックは常にfalseを返します。

いくつかのpre -wpname__フックの間にis_archiveをチェックする(または同じ結果を得る)ことができますか?

確認のためにis_archiveをpostidに渡すことができれば素晴らしいでしょうが、それはうまくいきません。

EDIT:私の知る限りでは、アーカイブには実際の所もありません。 wpname__が起動する前に、現在のURIがアーカイブかどうかをチェックするための何らかの方法が必要です。

EDIT:さらに実験してみると、私のURI操作はinitname__より後には実行できないようです。その時点でWPはすでに書き換えを行っており、そのような。そのため、initname__内でアーカイブページのステータスを確認する方法、またはinitname__の後にURIの書き換えを行う方法が必要です。どちらの方法でも、意図した結果が得られる限りは問題ありません。

1

あなたが言ったように、これはinitの中で私が思いつくことができるものです! $GLOBALS配列を印刷しても、現在のページがアーカイブかどうかを確認する方法はありません。is_archiveも空白に設定されています。しかし$_GET配列をチェックすると、q変数には現在表示されているアーカイブタイプが含まれます。これを使用して私はハックを思い付きました、それがいつもうまくいくならば、私はあなたを保証することができません!しかし、あなたはこれの周りに何かを試すことができます!

<?php

    add_action('init', 'q');

    function q()
    {
        //echo '<pre>';
        //print_r($_GET);
        //echo '</pre>';

        $q = $_GET['q'];

        //Here you can substitute other 'archive' terms, say 'author', 'date' or '<custom taxonomy name>'. Use a switch case or nested if-else to check all the archive terms in your environment!
        $pos = strpos($q, 'category');
        if($pos !== false )
            echo "CATEGORY ARCHIVE";
    }

これがうまくいくことを願っています!

1