web-dev-qa-db-ja.com

高度なカスタムフィールドとYoast SEOのキーワード分析

私が抱えている問題は、キーワードページ分析ツールが自分のカスタムフィールドを読み取れないため、それらに対してフィルタを実行する方法を見つけようとしているところです。

私はYoastのWebサイトでこの問題を参照しているブログの投稿を見つけました here そしてそれらはフィルタwpseo_pre_analysis_post_contentをリ​​ストします、しかし私はフィールドでこれを実行する方法がわからない。

ACF Webサイトのadmin編集画面で機能を実行するためのアクションが見つかりました:acf/input/admin_head しかし、フィルターを実行する方法がわかりませんロードされたアクション.

編集:

私はacfプラグインが実際にこのフィルタが組み込まれていることを知りましたが、うまくいっていないようです。

        // set value
        if( !isset($field['value']) )
        {
            $field['value'] = apply_filters('acf/load_value', false, $post_id, $field);
            $field['value'] = apply_filters('acf/format_value', $field['value'], $post_id, $field);

            apply_filters( 'wpseo_pre_analysis_post_content', $field['value'] );
        }
6
hyperdrive

フィルターを見てください。

$post_content = apply_filters( 'wpseo_pre_analysis_post_content', $post->post_content, $post );

それは分析されている文字列にあなたのフィールドの内容を追加することの問題でしょう。

get_field()の部分を正しく実行する必要があります。これはテストされていません。

add_filter( 'wpseo_pre_analysis_post_content', 'filter_yoasts_wpse_119879', 10, 2 );

function filter_yoasts_wpse_119879( $content, $post )
{
    $fields = get_field( 'name', $post->ID );
    return $content . $fields;
}

Kaiserがコメントで述べたように、get_field()関数は信頼できません。比較的単純なフィールドの場合は、 get_post_meta に固執することをお勧めします。

関連: ここで見つけたコードスニペットやウェブ上の他の場所にあるコードスニペットはどこに置きますか

5
brasofilo

Ho、@ hyperdrive - 私たちはまったく同じシナリオと必要性に取り組み、私たちのソリューション/アプローチをプラグインでラップしました。

http://wordpress.org/plugins/ns-seo-custom-fields/ /

あなたは編集インターフェースからの標準的なカスタムフィールド名またはACFの "フィールド名"値を使うことができます、そしてそれらの正確な値を見つける場所を示すスクリーンショットがあります:

http://wordpress.org/plugins/ns-seo-custom-fields/screenshots/ /

私たちはそれをリリースしたばかりで、それは私たちのために働くので、それがあなたのためにもうまく働くかどうか私たちに知らせてください。あなたはおそらくあなたがプラグイン自体からあなたが必要とするものを掃除するか、あなたの正確なニーズに合うようにそれを修正することができます...あるいは無制限のフィールドサポートを含むもっともっとするプロバージョンをチェックしてください。

2
Andrew