На самом деле это больше открытое обсуждение, чем вопрос, потому что я знаю, что добавление пользовательских аргументов к объекту типа сообщения действительно работает, но мне интересно, технически ли это неправильно в любом случае.
В основном, при регистрации типа поста:
$labels = array(
'name' => _x('Drews', 'post type general name'),
'singular_name' => _x('Drew', 'post type singular name'),
'add_new' => __('Add New'),
'add_new_item' => __('Add New Item'),
'edit_item' => __('Edit Item'),
'new_item' => __('New Item'),
'view_item' => __('View Item'),
'search_items' => __('Search Items'),
'not_found' => __('No Items found'),
'not_found_in_trash' => __('No Items found in Trash'),
'menu_name' => 'Archives'
);
$rewrite = array(
'slug' => 'drews'
);
$args = array(
'labels' => $labels,
'public' => true,
'show_in_menu' => true,
'query_var' => 'drews',
'rewrite' => $rewrite,
'has_archive' => true,
'hierarchical' => false,
'supports' => array('title','editor','author','comments'),
'_drew_made_this' => true
);
register_post_type('drews',$args);
Обратите внимание на самую последнюю строку в моем массиве $args, для ‘_drew_made_this’ установлено значение ‘true’. Это позволяет мне обусловливать это несколькими полезными способами, вроде того, как вы бы фильтровали ‘_builtin’ при использовании get_post_types(). Как я уже сказал, я знаю, что это работает, потому что я его использую, но есть ли какой-либо потенциал для того, чтобы это сломало WordPress каким-либо странным образом.
Я полагаю, большой вопрос в том, следует
register_post_type
ли принимать пользовательские параметры. Если это не предназначено для функции, я ожидаю, что ваш код перестанет работать в будущем (но это может быть не так). Я предполагаю, что единственный способ узнать наверняка — это проследить историю этой функции и посмотреть, предназначена ли функция для поддержки пользовательских аргументов.Я понимаю, что вы имеете в виду, и постараюсь обновить свой проект, чтобы следовать этой защите. Было бы определенно нехорошо, если бы я потерял текущую возможность добавлять аргументы.
Вы можете добавить столько аргументов, сколько хотите, в
register_post_type()
$args, поскольку все они сохраняются в$wp_post_types
глобальном массиве (например: $wp_post_types[type] = $args), но я не уверен, что это лучший способ. так как это может быть легко изменено в будущем, и тогда ваши функции сломаются, лучшим способом было бы создать свой собственный параметр в таблице параметров и использовать его, я имею в виду, что вы можете использоватьget_post_types()
и сохранить их как массив способом type => $args, и таким образом вы не зависите от основной функциональности, чтобы оставаться в текущем состоянии. Надеюсь, это сделает сцену.