私はこれにまったく慣れていません(WP Gutsを理解しています)。フックとフィルターをよりよく理解したかったのですが、Codexから正しく取得できません。
簡単なテストをしましたが、
アイデアは、ページが保護されている場合、タイトルから「Protected:」文を消去するために get_title() メソッドをオーバーライドすることです。protected_title_format フィルターがあり、それを使用することを考えました...
post-template.php のその行は次を指定します。
$protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
CODEX から取得できるものについては、そのフィルターを削除して独自のフィルターを追加する必要があります。
remove_action('protected_title_format');
apply_filters('protected_title_format', __('MY OWN PAGE Protected: %s'));
もちろん、次のようなものを使用して
// Removing action
function remove_title_action() {
remove_action('protected_title_format','get_the_title',3);
}
add_action('init','remove_title_action');
// Adding custom function
add_action('protected_title_format','fancy_title', 3, 4);
function fancy_title($id = 0) {
$post = &get_post($id);
$title = $post->post_title;
echo "I'm the king of the world!... >" . $title . "< & >" . $post . "<";
if ( !is_admin() ) {
if ( !empty($post->post_password) ) {
$protected_title_format = apply_filters('protected_title_format', __('MY OWN PAGE Protected: %s'));
$title = sprintf($protected_title_format, $title);
}
}
return apply_filters( 'the_title', $title, $post->ID );
}
出力へのエコーを取得できますが、$id を取得できません (そのため、$title も $post も取得できません)。このメソッドは、get_title() のコピーであり、保護された部分文字列以外のすべてを取り除きます。
これがどのように機能するかを説明してくれる人はいますか? ありがとうございました
PS私が学びたいのは、これがこの質問のアイデアであり、「ねえ、post-template.phpに行って変更してください」と言う人ではなく、「WPを更新するときはどうですか... ?」!