создать заголовок страницы из пользовательских полей типа записи - PullRequest
0 голосов
/ 07 февраля 2011

Я хотел бы создать заголовок своих сообщений пользовательского типа на основе пользовательских полей, которые вводит пользователь. Например, у меня есть поля 'имя' и 'фамилия', и я хочу, чтобы заголовок создавался из того, что пользователь вводит, и постоянная ссылка для создания слага тоже из него.

Я попробовал это в конце своего объявления пользовательского типа в functions.php:

function save_member(){
global $post;
update_post_meta($post->ID, "fname", $_POST["fname"]);
update_post_meta($post->ID, "lname", $_POST["lname"]); 
$this_post = array();   
$this_post['ID'] = $post->ID;   
$this_post['post_title'] = $_POST["fname"].' '.$_POST["lname"]; 
wp_update_post($this_post);
}

Он просто зависнет, если я добавлю последние 4 строки кода выше.

1 Ответ

0 голосов
/ 20 февраля 2011

Скорее всего, вы запускаете цикл, когда вызывается wp_update_post путем запуска некоторого вызова do_action () внутри него (или вызовов связанных функций).

Сделайте это:

public static function repair_title( $title ){
  global $post;

  // only do this for a specific type, may want to 
  // expand this as needed
  if( "your_type" != $post->post_type ) return $title;

  $firstname        = $_POST["firstname"];
  $lastname         = $_POST["firstname"];

  $title = $firstname . " " . $lastname;

  return $title;
}

public static function repair_name( $name ){
  global $post;
  if( "your_type" != $post->post_type ) return $name;

  $firstname        = $_POST["firstname"];
  $lastname         = $_POST["firstname"];

  $name = wp_unique_post_slug(
    $firstname . " " . $lastname,
    $post->ID,
    $post->post_type,
    0
  );

  return $name;
}

Редактировать: изменил это, заметив небольшую ошибку в моем собственном коде (я просто работал над этим в данный момент).Я использовал get_post_custom (), и он запускается до того, как объект post будет изменен, поэтому вам нужно получить свои значения из переменных переменной формы $ _POST.

Cheers!

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