WooCommerceでは、商品名にいくつかの文字を追加したいので、クライアントのQB SKUと一致します。MySQLを使用して特定の製品カテゴリの製品名を追加する
この製品はすべて同じ製品カテゴリの一部です。私は、この哀れな擬似コードのようなことをするために微調整することができるmySqlクエリ/コマンドが期待されています:
テーブルwp_posts内カテゴリ= "製品カテゴリ" PREPEND "abc_"
ありがとうございました。
WooCommerceでは、商品名にいくつかの文字を追加したいので、クライアントのQB SKUと一致します。MySQLを使用して特定の製品カテゴリの製品名を追加する
この製品はすべて同じ製品カテゴリの一部です。私は、この哀れな擬似コードのようなことをするために微調整することができるmySqlクエリ/コマンドが期待されています:
テーブルwp_posts内カテゴリ= "製品カテゴリ" PREPEND "abc_"
ありがとうございました。
UPDATED:私はSQLのエキスパートではありませんが、完全なSQLクエリを構築する方法を理解するのに役立ちます。
次の最後には、一度実行してジョブを実行するカスタム関数があります。
は、この特定のカテゴリの製品IDの配列を取得する方法である:
global $wpdb;
// Define HERE the corresponding 'term_taxonomy_id' of your product category.
$term_taxonomy_id = 11;
$table_name = $wpdb->prefix . "term_relationships";
$product_ids = $wpdb->get_col("
SELECT object_id
FROM $table_name
WHERE `term_taxonomy_id` = $term_taxonomy_id
ORDER BY $table_name.object_id ASC
");
テストされ、そのコードを使用すると、ある機能を行うことができます
の作品あなたがしたいことを達成するつもりです:
function prepending_products_names(){
global $wpdb;
// Define HERE the corresponding 'term_taxonomy_id' of your product category.
$term_taxonomy_id = 11;
$table_name = $wpdb->prefix . "term_relationships";
$product_ids = $wpdb->get_col("
SELECT object_id
FROM $table_name
WHERE `term_taxonomy_id` = $term_taxonomy_id
ORDER BY $table_name.object_id ASC
");
foreach($product_ids as $product_id){
// get the post object
$post_obj = get_post($product_id);
// get the product sku
$product_sku = get_post_meta($product_id, '_sku', true);
// Customizing the product name
// (You can prepend the a part of the sku to it)
$custom_product_name = 'abc_'. $post_obj->post_title;
// Updating the product name
wp_update_post(array(
'id' => $product_id,
'post_title' => $custom_product_name,
));
}
}
// Run this one time reloading a backend page and comment it
// (or remove the code aftewards).
if(is_admin())
prepending_products_names();
コードはあなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイル、またはプラグインファイルにも入っています。
このコードはテスト済みであり、動作します。
LoicTheAztec - これは実際のデータベースを更新しますか?私はそれをfunction.phpに残しておきますか? –
@BrockVondはい私の関数はデータベースを更新します:wp_update_post()WordPress関数。しかし、データベースのバックアップやポストテーブル**のバックアップを** **前にする...この方法であなたはそれを安全にテストすることができます。使用後(1回)、取り外してください。この関数は、あなたのサイトのページがブラウズされるときに実行されるので注意してください。... is_admin()で条件を追加してバックエンド(より安全)から実行できます。 – LoicTheAztec
私は最初の実行後にそれを削除しない場合、PHPは何度も何度も項目に接頭辞を追加し続けますか? is_admin()はどこに行きますか?私は管理者であり、バックエンドから(一度でも)実行するだけです。あなたの助けをもう一度感謝します...私は今日/今夜これをテストします。 –
あなたは、製品カテゴリに基づいて値を設定するために、これを使用すると
global $post;
$terms = get_the_terms($post->ID, 'product_cat');
foreach ($terms as $term) {
$category_id = $term->term_id;
break;
}
現在の製品カテゴリのIDを取得するには、次のように行います。今
if ($category_id == "1"){
$sku = "your_value_if_current_cat_id_is_2";
}elseif ($category_id == "2"){
$sku = "your_value_if_current_cat_id_is_2";
}else{
$sku = "your_value_for_all_other_categories";
}
のは、変数$sku
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
add_action('woocommerce_single_product_summary', 'woocommerce_my_single_title',5);
function woocommerce_my_single_title() {
global $post;
$terms = get_the_terms($post->ID, 'product_cat');
foreach ($terms as $term) {
$category_id = $term->term_id;
break;
}
if ($category_id == "1"){
$sku = "your_value_if_current_cat_id_is_2";
}elseif ($category_id == "2"){
$sku = "your_value_if_current_cat_id_is_2";
}else{
$sku = "your_value_for_all_other_categories";
}
?>
<h1 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h1>-<h2><?php echo $sku; ?></h2>
<?php
}
あなたのために選択された値が付加された新しいタイトルであなたの現在のタイトルを置き換えるために一緒にこれを入れて、機能をフックしましょう、あなたのfunctions.phpファイル内の関数を入れます
すばらしい答えですが、私はSKU /商品名を置き換えるのではなく、前に付けることを検討しています。ありがとうtho。 –
@BrockVondこれは置き換えられません。これは商品名にSKUを追加します。このコードを削除すると元の状態に戻ります。 –
また、カテゴリがwp_postsテーブルに表示されていないようです... ... ...混乱しています。 –
'Cat1'に属するプロダクト' ProA'をお持ちなら 'Cat1-ProA'に名前を変更する必要がありますか?商品が複数のカテゴリに属する場合はどうなりますか? 'ProB'は' Cat1'と 'Cat2'に属し、この場合の商品名は何ですか? –
私が欲しいのは、例えば "xyz"という複数のカテゴリーに属する商品のように、商品カテゴリーに基づいて変更しているため、商品名に「abc_」を追加することです。製品名は変更されますが、カテゴリ/カテゴリは変更されません。 –