web-dev-qa-db-ja.com

The_contentのカスタムフィルタが正しく機能しない

=====このPOSTは更新されました=====更新を読むためには一番下までスクロールしてください!

私は昨日、Timという名の紳士が刺さるのに十分にいいと言った質問をしました。彼は私がAdvanced Custom Fieldsを使って作成したカスタムメタボックスをthe_contentに追加することを可能にするフィルタを書くことを通して私を助けました。

トムは私にほとんどすべてのプロセスを通らせました、しかし残念ながら私がそれを完了するのを助けることができませんでした。私は一生懸命プロプログラマーではありませんが、私は(ここ数時間)彼のコードが何を意味するのか、そしてなぜバックエンドからテキストを引き出すのに失敗しているのかを解読しようとしました。 。

これが私の前の記事へのリンクです: それは今から始めてからあなたを連れて行きます

これが私が今持っているコードです。

function weedub_affiliate_filter($content) {
$string_to_add = '';
// only add on single posts with aff checkbox and label
if (is_single() && get_field('affiliate_checkbox') && get_field('affiliate_label')) {
    $string_to_add = $string_to_add . '
<div class="weedub_meta_box">
    <div class="weedub_meta_title">
        <span>Weedub Product Recommendations</span>
    </div>';
    while (the_repeater_field('affiliate_label')) {
        // list affiliates
        $string_to_add = $string_to_add . '
        <div class="weedub_meta_item">
            <div class="weedub_meta_label">
                <span>' . get_sub_field('label_affiliate') . '</span>
            </div>
            <div class="weedub_meta_value">
                <a href="' . get_sub_field('link_affiliate') . '" target="_blank" alt="reference link" title="reference link">
                                    ' . get_sub_field('text_for_link_affiliate') . '</a>
            </div>
        </div>';
    }
    $string_to_add = $string_to_add . '</div>';
}
$content = $content . $string_to_add;
return $content;

}

add_filter('the_content', 'weedub_affiliate_filter', 9);

このスニペットはそこにはほとんどありません、それは正しい場所に表示されています、そしてそれは私がバックエンドにフィールドの3行を入力したことを認識しています、それはフィールドからテキストを印刷していません。例(見出しが大文字の場合はEND OF THE_CONTENTと書いてあるところまでページを下にスクロールします): "Weedub Product Recommendations"ボックスを探します

すべての手助けはすごくありがたいです!ありがとう - アロン

=====更新====

それで、私はコードが実際に値を印刷することを知りました、しかしそれはthe_contentの前にそれらを印刷し、そしてthe_contentの後にマークアップ!!

コンテンツが実際に開始される直前(注目の画像の後)に表示されます。値の文字列が表示されます。 )ここに再びリンクです: 単一の投稿へのリンク

私はここでどこが悪いのかわからない。

3
Klyde

何が起こったのか正確にはわかりませんが、うまくいきました。すべてクリーンアップして使用する準備ができています...ここではみんなに行きます:

 /**
* 
* This is the filter that adds the affiliate box to the end of the article
* 
*/
add_filter('the_content', 'weedub_affiliate_filter', 9);
function weedub_affiliate_filter($content) 
    {
        $string_to_add = '';
        // only add on single posts with aff checkbox and label
        if (is_single() && get_field('affiliate_checkbox') && get_field('affiliate_label')) 
            {
                $string_to_add .= '<div class="weedub_meta_box"><div class="weedub_meta_title"><span>Weedub Product Recommendations</span></div>';
                while (the_repeater_field('affiliate_label')) 
                    {   
                        // list affiliates
                        $string_to_add .= '<div class="weedub_meta_item"><div class="weedub_meta_label"><span>' . get_sub_field('label_affiliate') . '</span></div><div class="weedub_meta_value"><a href="' . get_sub_field('link_affiliate') . '" target="_blank" alt="reference link" title="reference link">' . get_sub_field('text_for_link_affiliate') . '</a></div></div>';
                    }
                $string_to_add .= '</div>';
            }
        $content .= $string_to_add;

        return $content;
    }

誰かがこれを片付けたり最適化したりできるかどうか私に知らせてください。私はそれがさらに微調整されることができると確信しています。

このコードの大部分の@timに感謝します。

2
Klyde