web-dev-qa-db-ja.com

カスタム投稿タイプのデフォルトまたはプリセットの内容

投稿の種類に基づいて表示するデフォルトのコンテンツのコードを変更しようとしていますが、これまでのところ失敗しています。基本コードは次のとおりです。

add_filter( 'default_content', 'my_editor_content' );
function my_editor_content( $content ) {
    $content = "default content goes here....";
    return $content;
}

私の修正は次のとおりです。

add_filter( 'default_content', 'my_editor_content' );

function my_editor_content( $content ) {
    if ( 'sources' == get_post_type() ) {
        $content = "Please insert an image of the document into this area.  If there is no image, please descript the document in detail.";
        return $content;
    } elseif ( 'stories' == get_post_type() ) {
        $content = "Please write your reminiscences, recollections, memories, anecdotes, and remembrances in this area.";
        return $content;
    } elseif ( 'pictures' == get_post_type() ) {
    $content = "Please insert an image of a photograph into this area.";
    return $content;
    } else {
    $content = "default!";
    return $content;
};}

しかし、これではうまくいきません。私は自明を見逃したように感じます。

1
Isendra

2つ目のパラメータ$postを使用して、スイッチと一緒に$post->post_typeをチェックしてください。

add_filter( 'default_content', 'my_editor_content', 10, 2 );

function my_editor_content( $content, $post ) {

    switch( $post->post_type ) {
        case 'sources':
            $content = 'your content';
        break;
        case 'stories':
            $content = 'your content';
        break;
        case 'pictures':
            $content = 'your content';
        break;
        default:
            $content = 'your default content';
        break;
    }

    return $content;
}

それが役立つことを願っています..

3
t31os

もっと試してみてください。

function my_editor_content( $content ) {

 global $post

 if (get_post_type($post) == 'sources'){
 //rest of your stuff
0
Wyck