Intereting Posts

Могу ли я переопределить permalink / slug при создании

У меня есть плагин, который импортирует данные из внешнего API, создает тип пользовательской публикации «Продукт» (или обновляет существующий), а затем добавляет все метаданные.

Каждый раз, когда мы обновляем продукт из внешнего API, он перезаписывает Permalink. Мы используем основное название продукта для названия, но хотим добавить метаданные, чтобы отличить его от других продуктов. Например. У нас есть 3 продукта под названием «Витамин С», но они разные сильные стороны и ароматы (например, апельсин, ягода и лайм)

У меня есть два вопроса:

  1. Какой метод WP запускает обновление постоянной ссылки?
  2. Как я могу предотвратить это? add_action ? add_filter ?

Я хотел бы сделать две вещи:

  1. Выберите собственный шаблон для постоянной ссылки. (Заголовок сообщения + Сила + Вкус)
  2. НЕ переопределяйте это при обновлении продукта (так что пользовательские изменения не перезаписываются)

Плагин, который импортирует продукт, находится в классе, и вот метод, в котором я думаю, что происходит изменение:

 /** * Update the title and content of Product post. * * @param int $id */ private function update_product_post( $id ){ $title = $this->current_product->PrimaryName; $content = $this->current_product->PreviewSummary; $post = array( 'ID' => $id, 'post_title' => $title, 'post_content' => $content, 'post_name' => $title, ); wp_update_post( $post ); } 

После update_post_meta этого метода есть много другого кода, который также использует update_post_meta . Я не думаю, что обновление мета приведет к изменению постоянной ссылки, но вот один пример.

 /** * Update a single primary meta field for a product. * * @param int $post_id * @param int $pim_id * @param string $field * @param string $lang */ public function update_primary_meta( $post_id, $pim_id, $field, $lang){ $primary_meta_fields = $this->plugin_meta->get_primary_meta(); // check to make sure meta key is valid and product exists in API. if ( ! array_key_exists( $field, $primary_meta_fields ) || ! $this->get_product( $pim_id, $lang ) ) { return; } $value = $this->get_product_property( $field ); if ( $value ) { $meta_key = $this->prefix . $field; update_post_meta( $post_id, $meta_key, $value ); } } 

Я немного изменил код здесь: Измените slug при создании почты, чтобы повлиять на тип персонализированного product и удалили большую часть кода и добавили FOO чтобы увидеть, будет ли он работать, но он, похоже, не срабатывает. Я не уверен, что это так, как я его называю из плагина или нет.

В любом случае, если кто-то может помочь мне понять, где искать сначала, где установлены постоянные ссылки и как переопределить их или предоставить мне пример кода или, по крайней мере, поставить в правильном направлении, это было бы ВЕЛИКОЕ оценено.

Сообщение в блоге о том, как динамически переоценивать эти вещи, было бы еще лучше!

Solutions Collecting From Web of "Могу ли я переопределить permalink / slug при создании"