WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

post_submitbox_start хук-событие . WP 2.7

Срабатывает прямо перед блоком с кнопкой "опубликовать" (обновить) в блоке "опубликовать" админ-панели. С помощью этого хука, можно добавить свой текст перед кнопкой.

Чтобы добавить текст чуть выше кнопки используйте хук post_submitbox_misc_actions.

Использование

function action_function_name_11() {
	// Действия...
}
add_action( 'post_submitbox_start', 'action_function_name_11' );

Вызов в файле

do_action('post_submitbox_start');

Примеры

  1. Добавим какой-нибудь текст перед кнопкой "опубликовать":
function action_function_name_11() {
	echo "<p>Текст перед кнопкой. Вместо этого текста мы можем, например,
	добавить дополнительную кнопку, по нажатию на которую 
	как-то по особенному обрабатывать публикацию.</p>";
}
add_action( 'post_submitbox_start', 'action_function_name_11' );
post_submitbox_start

Связи хука

Используется в: post_submit_meta_box(), link_submit_meta_box()

Остальные хуки из: post_submit_meta_box():

Остальные хуки из: link_submit_meta_box():

Фрагменты кода хука post_submitbox_start

Фрагмент из: wp-admin/includes/meta-boxes.php WP 4.8.1
...
 * @param WP_Post $post WP_Post object for the current post.
 */
do_action( 'post_submitbox_misc_actions', $post );
?>
</div>
<div class="clear"></div>
</div>

<div id="major-publishing-actions">
<?php
/**
 * Fires at the beginning of the publishing actions section of the Publish meta box.
 *
 * @since 2.7.0
 */
do_action( 'post_submitbox_start' );
?>
<div id="delete-action">
<?php
if ( current_user_can( "delete_post", $post->ID ) ) {
	if ( !EMPTY_TRASH_DAYS )
		$delete_text = __('Delete Permanently');
	else
		$delete_text = __('Move to Trash');
	?>
<a class="submitdelete deletion" href="<?php echo get_delete_post_link($post->ID); ?>"><?php echo $delete_text; ?></a><?php
} ?>
</div>

<div id="publishing-action">
<span class="spinner"></span>
...
Фрагмент из: wp-admin/includes/meta-boxes.php WP 4.8.1
...
</div>
<div class="clear"></div>
</div>

<div id="misc-publishing-actions">
<div class="misc-pub-section misc-pub-private">
	<label for="link_private" class="selectit"><input id="link_private" name="link_visible" type="checkbox" value="N" <?php checked($link->link_visible, 'N'); ?> /> <?php _e('Keep this link private') ?></label>
</div>
</div>

</div>

<div id="major-publishing-actions">
<?php
/** This action is documented in wp-admin/includes/meta-boxes.php */
do_action( 'post_submitbox_start' );
?>
<div id="delete-action">
<?php
if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('manage_links') ) { ?>
	<a class="submitdelete deletion" href="<?php echo wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
<?php } ?>
</div>

<div id="publishing-action">
<?php if ( !empty($link->link_id) ) { ?>
	<input name="save" type="submit" class="button button-primary button-large" id="publish" value="<?php esc_attr_e( 'Update Link' ) ?>" />
<?php } else { ?>
	<input name="save" type="submit" class="button button-primary button-large" id="publish" value="<?php esc_attr_e( 'Add Link' ) ?>" />
<?php } ?>
</div>
...
post_submitbox_start 4 комментария
  • Дмитрий

    Здравствуйте! А есть ли возможность как-то зацепиться и отфильтровать в метабоксе submitdiv статусы? Что я имею ввиду.
    Я добавил несколько своих статусов и теперь не нужны в определенных типах постов нужно исключить из select статусы Draft и Peding (selected( $post->post_status, 'pending' end selected( $post->post_status, 'draft')

    Мне удалось запретить при публикации поста присваивать ему упомянутые статусы, а вот скрыть не получается. Можно скрыть используя CSS правило:

    select#post_status option[value=draft] { display: none; };
    select#post_status option[value=pending] { display: none; };

    но в этом случае правило не работает в браузере FireFox. То есть таким образом невозможно добиться кроссбраузерности. Не подскажите, может есть возможность как-то отфильтровать статусы или убрать их с помощью unset. Не знаю как зацепиться. Заранее благодарен за любую информацию.

    • Kama4472

      А что это за ; после }... Может FF не понимает это... Также попробуй указать !important - display: none!important;

      • Дмитрий

        Пробовал, не работает.

        Главное в FireBug показывает, что стиль есть, но не работает. Перелопатил кучу информации (в том числе и буржунет) все как один пишут, что кроссбраузерности добиться с options невозможно.

        Вот думаю, за что зацепиться чтобы как-то отфильтровать из select option value=draft и value=pending. Пока все безрезультатно. Но выход то должен быть.

        • Дмитрий

          Эврика! С jQuery работает во всех популярных браузерах. dance

          echo "<script>
          	jQuery(document).ready( function($) {
          		$('select option[value=draft]').hide();
          		});
          	</script>";

          P.S. Может кому-то пригодиться и поможет сэкономить время.

Здравствуйте, !

Ваш комментарий