カスタム投稿タイプをプラグインとして作成し、それをリポジトリに公開しました。中心的な機能の1つは、注目の画像を使用することです。 register_post_type()
の$supports
にthumbnail
を追加したので、メタボックスが管理パネルに表示されます。私はafter_setup_theme
にフックしてadd_theme_support( 'post-thumbnails' )
を呼び出すこともしていますが、効果があるとは思いません。
コーデックスは あなたはテーマのfunctions.phpファイルからそれを呼び出さなければならないと言っています しかし、それが本当ならそれはユーザーのテーマがadd_theme_support( 'post-thumbnails' )
( all postタイプをカバーするでしょう)を呼び出す場合にだけうまくいくでしょう。テーマがそれを呼び出さないか、または特定のタイプでそれを呼び出すだけであれば、それは機能しません。
誰もがこの問題を回避する方法を見ますか?
これを改善すべきであるというコアコード内のコメントがありますが、それらはもうしばらくの間そこにあります。基本的には、ある機能の 部分 を追加または削除するためのネイティブ機能はなく、機能のみです。
テーマが完了した後に手動でそれを実行することはこのような何かを実行するでしょう(after_setup_theme
フックで遅く):
function add_thumbnails_for_cpt() {
global $_wp_theme_features;
if( empty($_wp_theme_features['post-thumbnails']) )
$_wp_theme_features['post-thumbnails'] = array( array('your-cpt') );
elseif( true === $_wp_theme_features['post-thumbnails'])
return;
elseif( is_array($_wp_theme_features['post-thumbnails'][0]) )
$_wp_theme_features['post-thumbnails'][0][] = 'your-cpt';
}
これは私が使用してしまったもので、これはRarstの答えの修正版です
public function addFeaturedImageSupport()
{
$supportedTypes = get_theme_support( 'post-thumbnails' );
if( $supportedTypes === false )
add_theme_support( 'post-thumbnails', array( self::POST_TYPE ) );
elseif( is_array( $supportedTypes ) )
{
$supportedTypes[0][] = self::POST_TYPE;
add_theme_support( 'post-thumbnails', $supportedTypes[0] );
}
}
add_action( 'after_setup_theme', array( $this, 'addFeaturedImageSupport' ), 11 );