2016-11-26 11 views
0

私は次のコードスニペットを持っている:wordpressのimage_meta値のクエリを実行するには?私のサイトで

<span class='legenda'> 
<?php _e('Artist:','twentytwelve_child');?> 
</span> 
<?php printf (' ' . $metadata[image_meta][credit]);?> 

最後のピース[credit]は私に、アーティストの名前を与えます。

出力されたアーティスト名をWooCommerce製品データベースを検索し、そのアーティストのすべての製品を表示するクエリに変換する方法を教えてください。

EDIT:すべての画像にデフォルトのIPTC/EXIFデータが保存されています。次のコード行で、配列[image_meta]からデータを取得します。 <?php $filedimensions = wp_get_attachment_metadata($post_thumbnail_id, FALSE); ?>

この配列には、アーティストの名前を保持するフィールド[credit]があります。スクリーンショットを参照してください。 enter image description here

名前(この場合はAdrie Oosterwijk)をリンクにする必要があります。クリックした後、アーカイブページは、(この場合は)Adrie Oosterwijkのすべての画像とともに表示されなければなりません。 この[クレジット]フィールドのすべてを照会し、それぞれのアーティストからすべての画像を返す方法を見つけなければなりません。

検索の発言に関して:私のコメントの

EDIT 2 Eleborate 私は製品]タブをクリックし、管理ダッシュボード。 ここでは、それぞれの分類法に記載されている製品が表示されています。右上には、カテゴリまたはタグなどの製品を検索するための検索フィールドがあります。私は分類学写真家検索した場合しかし、(私はそれは結果を返しません

enter image description here

、(下のスクリーンショットを参照)写真家に、アーティストの名前を変更しました。(下のスクリーンショットを参照)

enter image description here

任意のアイデアなぜこれが起こっているのですか?

翻訳の発言について: 私はWPMLを使用しています私のサイトの翻訳のために。現時点では、デフォルト言語としては英語が、第2言語としてはオランダ語があります。私が製品を追加すると、フォトグラファー(または最初に呼び出されたアーティスト)がカスタムタクソノミのフォトグラファーに完全に追加されます。しかし、製品を英語からオランダ語に翻訳して分類学者の写真を翻訳しようとすると、個人名に関係するので嫌なことはしないでください。WPMLではタクソノミの名前はリストされていません(下記のスクリーンショットを参照)

enter image description here

タクソノミーの翻訳の動作は、製品 - >編集画面に表示されます 下記のスクリーンショットを参照してください。

enter image description here

我々は分類学「写真家」が表示されているが、処理が何もしないように設定されて見ることができるように。通常はコピーに設定されます。ただし、コピーはここでは表示されないため、選択することはできません。それは、デフォルトでコピーに設定されていると素晴らしいでしょう。

オランダ語の製品をリストしている現在、タクソナミーの写真家は空のままです。

この2つのものをどのように追加するかについてのご意見はありますか?

答えて

1

あなたのfunctions.phpにこのコードを追加するか、新しいプラグインを作成:だけでスラグを見つける方法を、今

// wp function to get the artists from a post as object 
$post_id = 46772; // your post id or post object 
$taxonomy = 'artist'; 
$artists_from_post = get_the_terms($post_id, $taxonomy); 

// wp function to get the artists url 
$taxonomy_slug = 'deny-de-vito'; // the slug of your artist taxonomy from above 
$taxonomy = 'artist'; 
$artist_url = get_term_link($taxonomy_slug, $taxonomy); 

:フロントエンドのための分類法を取得する方法

// action call to register a taxonomy 
add_action('init', 'artist_to_product'); 

// function for registering artist taxonomy 
function artist_to_product() { 
$labels = array(
    'name'      => 'Artists', 
    'singular_name'    => 'Artist', 
    'menu_name'     => 'Artist', 
    'all_items'     => 'All Artists', 
    'new_item_name'    => 'New Artist Name', 
    'add_new_item'    => 'Add New Artist', 
    'edit_item'     => 'Edit Artist', 
    'update_item'    => 'Update Item', 
    'separate_items_with_commas' => 'Separate Artists with commas', 
    'search_items'    => 'Search Artists', 
    'add_or_remove_items'  => 'Add or remove Artists', 
    'choose_from_most_used'  => 'Choose from the most used Artists', 
); 
$args = array(
    'labels'      => $labels, 
    'hierarchical'    => false, // we dont need hierarchical artists 
    'public'      => true, 
    'show_ui'     => true, // you can set it to false if you want 
    'show_admin_column'   => true, // you can set it to false if you want 
    'show_in_nav_menus'   => true, // show in product menu bar? 
    'show_tagcloud'    => true, // you can set it to false if you want 
); 

// register the taxonomys 
register_taxonomy('artist', 'product', $args); 
register_taxonomy_for_object_type('artist', 'product'); 
} 

/** 
* You have now an ARTIST taxonomy in your products 
* Your taxonomy link: http://www.yourdomain.com/artist/the-artist-name/ 
* Dont forget to flush your permalinks: Settings->Permalinks and save as it is. 

* You can add manuel an artist or do it automaticly 
* for automaticly adding on save/update a product 
*/ 

/** 
* Save post metadata when a post is saved. 
* 
* @param int $post_id The post ID. 
* @param post $post The post object. 
* @param bool $update Whether this is an existing post being updated or not. 
*/ 
function save_artist_meta($post_id, $post, $update) { 

    /* 
    * In production code, $slug should be set only once in the plugin, 
    * preferably as a class property, rather than in each function that needs it. 
    */ 
    $post_type = get_post_type($post_id); 

    // If this isn't a 'product' post, don't update it. 
    if ("product" != $post_type) return; 

    // - Update the post's taxonomy. 
    // GET YOUR ARTIST NAME FROM IMAGE 
    // i dont know how you retrierve it 
    // is it from thumbnail or from other images? i dont know 

    //Example: 
    $artist_name = 'Leonardo Da Vinci'; // can be comma seperated like: 'Leonardo Da Vinci, Van Gogh' or an array of artists 

    // set taxonomy to post 
    // make a check 
    if(empty($artist_name)) return; 

    $taxonomy = 'artist'; 
    $append = false; // we dont want to append, we want to replace it. 
    wp_set_object_terms($post_id, $artist_name, $taxonomy, $append); 

} 
add_action('save_post', 'save_artist_meta', 99, 3); 

をプレーンテキスト/アーティスト名? あなたは、この機能によって自動にアーティスト名を保存したので、私たちは、WPのsanitize_title機能を使用できる場合:

$artist_name_from_image = 'Leonardo Da Vinci'; 
$artist_slug = sanitize_title($artist_name_from_image); 
// this wil produce: 'leonardo-da-vinci'. 
+0

マイク、私を助けてくれてありがとう。私のためにあなたがした作品は印象的です。奇妙なことに、私は今あなたの答えを得て、私は本当に前にチェックしています。できるだけ早く勉強して解決策を試し、その直後に戻ってきます。私は明日と水曜日のための予定の束を持っていますが、私は興味があります、私は木曜日の前に返信しようとします。今のところ、もう一度ありがとう、私はあなたに知らせる。 – A3O

+0

それは信じられない!!!!これは本当に素晴らしいです。期待どおりもっと!あなたはロック!それは私が期待しているだけでなく、ダッシュボードの「製品」タブにもアーティストの名前が表示されます。スーパー!!!本当に。しかし、これまでのところ、このソリューションをテストする際には、いくつかのことが念頭に置かれていました。今のところ、私はアーティストのために製品のデータベースを検索することができません。 Wordpressには「製品が見つかりません」と表示され、次にWPMLを翻訳管理に使用しています。このタクソノミが他の言語では埋められていないことがわかります。 – A3O

+0

通常、タクソノミータブで、コピー、翻訳、または何もしないオプションが表示されます。現在は「何もしない」に設定されているため、他の言語学者のタクソノミー「アーティスト」のデータはありません。このタクソノミを手元のあらゆる言語にコピーするソリューションであれば素晴らしいですが、コピーオプションは表示されません。それを達成するためのWPMLの設定を見ていきます。最後に、あなたが提供するコードの最後の3ビットを理解していません。私は私の関数でそれをコメントアウトしました.phpとidtはうまく動作します。 – A3O

0

私はここに書きます。あなたのテンプレートやプラグインに基づいて合計。あなたの製品があなたの店でどのように保存されているか、各製品にメタキー「アーティスト」があるかについて、より多くの情報を提供してください。あなたのプラグイン/テンプレートはdb行/列のアーティストデータを保存しますか? 私はwoocommerce知っているので、既定としてアーティスト属性がありません。

+0

は、ご返信いただきありがとうございます。私は質問を編集しました。もっと理にかなってほしい。 – A3O

+0

あなたはアーティストのイメージのみを必要としますか?または製品ですか? 商品名をタクソノミーとして商品に自動的に追加したい場合は保存後に商品画像を取得してアーティスト名を抽出し、この商品のタクソノミーとしてアーティスト名を追加または更新する機能をお勧めします。この方法は最も簡単な方法です。この方法でWP self taxonomysを使用して、必要なものをリストして実行することができます。 –

+0

病気は答えとして関数を書く。ここで夕食の時間:D –

関連する問題