Создать новый пост в WordPress, когда новый продукт опубликован - PullRequest
0 голосов
/ 03 июня 2019

Я хотел бы создать автоматическую публикацию в Wordpress при создании нового продукта в Woocommerce.

Я хотел бы использовать название продукта и ссылку на этот продукт.

Таким образом, функция считывает «заголовок для этого продукта», который становится заголовком для статьи (поста). «Ссылка для этого продукта» становится «содержимым» поста (который создает снимок для поста)

Но этот пост должен быть опубликован, только если продукт опубликован и "активен".Если продукт не опубликован, значит, публикация не публикуется.

И лучший способ заключается в том, что все модификации продукта не создают новую публикацию, а обновляют публикацию в отношении ...

Может кто-нибудь помочь мне с этим? Заранее спасибо

Есть ли способ? Не в лучшую сторону?

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

global $post;

if ( $post->post_type !== 'product' ) return;
// On récupère les données dont on a besoin pour créer le nouveau post  
// Get $product object from product ID

$product = wc_get_product( $product_id );

// Now you have access to (see above)...

//$product->get_type();
$product->get_name();
$nomduproduit = $product->get_name();
// On récupère l'URL du Jeu
$jeuurl = get_permalink( $item['product_id'] ) ;


if ( 'publish' !== $new_status or 'publish' === $old_status ) return;

$post = array( 
   //'ID'             => [ <post id> ] 
   'post_content'   => return '<a href="'. $jeuurl .'">'. $item_name .'</a>';  
   'post_name'      => [ '$nomduproduit' ] 
   'post_title'     => [ '$nomduproduit' ] 
   'post_status'    => [ 'publish' ] 
   'post_type'      => [ 'post' ] 
   'post_author'    => [ 'BingoHome' ] // The user ID number of the author. Default is the current user ID.
   'ping_status'    => [ 'open' ] // Pingbacks or trackbacks allowed. Default is the option 'default_ping_status'.
   'post_parent'    => [ '$product_id' ] // Sets the parent of the new post, if any. Default 0.
   //'menu_order'     => [ <order> ] // If new post is a page, sets the order in which it should appear in supported menus. Default 0.
   //'to_ping'        => // Space or carriage return-separated list of URLs to ping. Default empty string.
   //'pinged'         => // Space or carriage return-separated list of URLs that have been pinged. Default empty string.
   //'post_password'  => [ <string> ] // Password for post, if any. Default empty string.
   //'guid'           => // Skip this and let Wordpress handle it, usually.
   //'post_content_filtered' => // Skip this and let Wordpress handle it, usually.
   'post_excerpt'   => [ <string> ] // For all your post excerpt needs.
   'post_date'      => [ Y-m-d H:i:s ] // The time post was made.
   'post_date_gmt'  => [ Y-m-d H:i:s ] // The time post was made, in GMT.
   'comment_status' => [ 'closed' | 'open' ] // Default is the option 'default_comment_status', or 'closed'.
   'post_category'  => [ array(<category id>, ...) ] // Default empty.
   'tags_input'     => [ '' | array ] // Default empty.
   'tax_input'      => [ array( <taxonomy> => <array | string> ) ] // For custom taxonomies. Default empty.
   'page_template'  => [ <string> ] // Requires name of template file, eg template.php. Default empty.
   );  

   wp_insert_post($new_post);

} ````   

What do you think ? 
0 голосов
/ 03 июня 2019

вы можете использовать эту функцию add_this_to_new_products, которая запускается при создании нового продукта и дополнена wp_insert_post для создания новой публикации (вместе с вашими данными).

function add_this_to_new_products( $new_status, $old_status, $post ) {

global $post;

if ( $post->post_type !== 'product' ) return;

if ( 'publish' !== $new_status or 'publish' === $old_status ) return;

 $post = array( 
    'ID'             => [ <post id> ] 
    'post_content'   => [ <string> ] 
    'post_name'      => [ <string> ] 
    'post_title'     => [ <string> ] 
    'post_status'    => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ] 
    'post_type'      => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] 
    'post_author'    => [ <user ID> ] // The user ID number of the author. Default is the current user ID.
    'ping_status'    => [ 'closed' | 'open' ] // Pingbacks or trackbacks allowed. Default is the option 'default_ping_status'.
    'post_parent'    => [ <post ID> ] // Sets the parent of the new post, if any. Default 0.
    'menu_order'     => [ <order> ] // If new post is a page, sets the order in which it should appear in supported menus. Default 0.
    'to_ping'        => // Space or carriage return-separated list of URLs to ping. Default empty string.
    'pinged'         => // Space or carriage return-separated list of URLs that have been pinged. Default empty string.
    'post_password'  => [ <string> ] // Password for post, if any. Default empty string.
    'guid'           => // Skip this and let Wordpress handle it, usually.
    'post_content_filtered' => // Skip this and let Wordpress handle it, usually.
    'post_excerpt'   => [ <string> ] // For all your post excerpt needs.
    'post_date'      => [ Y-m-d H:i:s ] // The time post was made.
    'post_date_gmt'  => [ Y-m-d H:i:s ] // The time post was made, in GMT.
    'comment_status' => [ 'closed' | 'open' ] // Default is the option 'default_comment_status', or 'closed'.
    'post_category'  => [ array(<category id>, ...) ] // Default empty.
    'tags_input'     => [ '<tag>, <tag>, ...' | array ] // Default empty.
    'tax_input'      => [ array( <taxonomy> => <array | string> ) ] // For custom taxonomies. Default empty.
    'page_template'  => [ <string> ] // Requires name of template file, eg template.php. Default empty.
    );  

    wp_insert_post($new_post);

} 
add_action( 'transition_post_status', 'add_this_to_new_products', 10, 3 );

Дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...