0

しばらくの間、WordPress プラグインのバグの解決策を見つけようとしています (開発者からの応答を得ることができませんでした)。プラグインはImageFXと呼ばれます。

基本的には、WordPress にアップロードされた画像の画像効果を作成します。画像をグレースケールに変換するために使用しています。ただし、ページを作成して保存し、後で戻って注目の画像をページに追加しようとすると、その画像では ImageFX 画像が作成されません。ここで同じ問題を抱えている人を見ることができます。

エラーを再現する方法:

  1. ページを作成
  2. おすすめのサムネールとパブリッシュ ページをアップロードして設定します (= ImageFX プロデューサーが新しいサムネールを正しく作成します)。
  3. しばらくお待ちください(1日だと思います)。次に、おすすめの親指を削除し、ギャラリーから if を削除します。
  4. 新しいサムネイルをアップロードします ( = ImageFX によって作成された新しいサムネイルはありません)。

または、古い投稿/ページに画像をアップロードしてみてください。ImageFX サムネイルは作成されません。

私の推測では、これは問題のあるコードです。ここでファイル全体を見ることができます

add_filter( 'wp_generate_attachment_metadata', 'imagefx_filter' );
/**
 * Creates all ImageFX intermediate sizes of the image based on imagefx_options
 *
 * @param mixed $meta Metadata for attachment.
 * @return mixed $meta Modified metadata for attachment.
 */
function imagefx_filter( $meta ) {
global $imagefx_filters;

$options = get_option( 'imagefx_options' );

foreach ( $meta['sizes'] as $size => $info ) {

    if ( empty( $options['filter'][$size] ) ) continue;
    $filter = $options['filter'][$size];
    
    if ( empty( $imagefx_filters[$filter] ) ) continue;
    $callback = $imagefx_filters[$filter];
    
    $file = wp_upload_dir();
    $file = trailingslashit( $file['path'] ) . $info['file'];
    list( $orig_w, $orig_h, $orig_type ) = @getimagesize( $file );
    
    if ( IMAGETYPE_JPEG === $orig_type || apply_filters( 'imagefx_image_type', false, $orig_type ) ) {
        
        $image = wp_load_image( $file );
        
        $callback( $image );
        
        $slug = $options['slug'][$size];
        if ( ! empty( $slug ) ) {
            $newfile = substr( $file, 0, -4 ) . '-' . $slug . substr( $file, -4 );
            $info['file'] = substr( $info['file'], 0, -4 ) . '-' . $slug . substr( $info['file'], -4 );
        } else {
            $newfile = $file;
        }
        
        if ( IMAGETYPE_JPEG == $orig_type )
            imagejpeg( $image, $newfile );
        
        do_action( 'imagefx_image_create', $image, $newfile, $orig_type );
        
        $meta['sizes'][$size]['file'] = $info['file'];
    }
    
}

return $meta;
}
4

1 に答える 1

1

この問題が発生する前に、フィルター処理された画像が実際に表示されていると思いますか? たとえば、それらはメディアライブラリにありますか?

もしそうなら、それはプラグインの問題ではありません。ポスト サムネイル (または注目の画像が呼び出しているもの) で機能するようにフィルターを設定する必要があります。このようにして、テーマは正しいサムネイルを呼び出します。

問題のあるサムネイルのファイル名を確認してください。メディア ライブラリ内の「正しい」フィルター画像とは異なる可能性があります。

于 2012-10-25T23:24:59.540 に答える