Я знаю, что это может быть не по теме, поскольку это связано с Genesis (премиальная структура), но с общим WordPress это связано с запуском remove_action
и add_action
зависимости от того, существует ли пользовательское поле. Я не вижу ничего простого, что я делаю неправильно здесь.
То, что я пытаюсь сделать, это показать патчи по умолчанию, если не созданы пользовательские поля, и если это так, отобразите содержимое настраиваемого поля.
Почему
remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' ); add_action('genesis_before_loop', 'customfield_breadcrumbs');
пожар, когда пользовательское поле существует, удалите customfield_breadcrumbs
по умолчанию, добавьте customfield_breadcrumbs
и затем echo
меня на свое настраиваемое поле?
Полная функция:
function customfield_breadcrumbs() { global $post; $crumb = get_post_meta($post->ID, 'custom_breadcrumb', true); if ($crumb) { remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' ); add_action('genesis_before_loop', 'customfield_breadcrumbs'); echo '<div class="breadcrumb">'; echo get_post_meta($post->ID, 'custom_breadcrumb', $single = true); echo '</div>'; } }
Это корректно выводит html (из $ post и $ crumb) настраиваемого поля, но мне нужно отображать патчи по умолчанию, если нет специального поля:
function customfield_breadcrumbs() { global $post; $crumb = get_post_meta($post->ID, 'custom_breadcrumb', true); if ($crumb) { echo '<div class="breadcrumb">'; echo get_post_meta($post->ID, 'custom_breadcrumb', $single = true); echo '</div>'; } }
И это основная функция сундука из книги Бытия:
function genesis_breadcrumb( $args = array() ) { global $_genesis_breadcrumb; if ( ! $_genesis_breadcrumb ) $_genesis_breadcrumb = new Genesis_Breadcrumb; $_genesis_breadcrumb->output( $args ); } add_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' );
И они настроены настройками в Genesis >> Настройки темы:
Я не понимаю, как работает ваш код, как я упоминал в своем комментарии. Похоже, вы добавляете действие для вызова функции внутри функции, которую вы хотите вызвать с помощью этого действия. Если ничего из функции не вызывает ее , она никогда не запускается.
add_action( 'template_redirect', 'check_breadcrumb_condition' ); function check_breadcrumb_condition(){ global $post; $crumb = get_post_meta($post->ID, 'custom_breadcrumb', true); if ($crumb) { remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' ); add_action( 'genesis_before_loop', 'customfield_breadcrumbs' ); } } function customfield_breadcrumbs() { global $post; echo '<div class="breadcrumb">'; echo get_post_meta($post->ID, 'custom_breadcrumb', true); echo '</div>'; }