- after_setup_theme
- init
- template_redirect
- shutdown
Notes about WordPress Gutenberg themes development.
.htaccess (1) ACF (7) admin (1) ajax (2) api (1) API interactivity (1) block (20) block_style (2) colors (2) constante (1) context (1) conventions (2) cron (1) css (5) custom post type (1) data (1) debug (2) define (1) file_API (1) functions.php (6) git (4) hook (7) i18n (2) js (2) layout (1) loop (1) media (1) media library (1) menu (2) navigation (1) patterns (1) performance (2) post (1) query (3) readmore (1) responsive (1) rest api (1) scss (1) security (7) spacing (1) sql (1) svg (1) taxonomy (1) theme (1) theme.json (11) typo (2) URL (1) wp-config.php (6) wp cli (3) wp function (7)
-
# hook
-
Redirections
# hookRead more
Si on veut cacher Ă la fois les single et les archives, le plus simple est public Ă false. PrĂ©ciser show_ui et show_in_rest Ă true pour pouvoir les gĂ©rer dans l’admin et dans Gutenberg. Ne pas prĂ©ciser de rewrite du tout, ou alors Ă false.
=> les urls ne sont pas du tout accessibles de nulle part (pas de lien “Voir” dans le BO), y compris en SEO : c’est le plus pratique, et pas d’erreurs/oublis possibles.
Pour mĂ©moire, si on veut uniquement cacher les archives, avoir public Ă true, mais has_archive Ă false permet de pouvoir gĂ©rer une Page au mĂȘme nom que slug des single. Si on ne veut aucune page au slug des singles, laisser has_archive Ă true, et crĂ©er une redirection via le filter template_redirect. (cas des Rapports d’ecomaison).
Si on veut cacher uniquement les singles mais conserver l’archive (si on n’a pas de page qui fait le job, ce qui est quand mĂȘme le cas le plus frĂ©quent), il faut passer par du code WP de redirection sur le filter template_redirect et bloquer les singles dans Yoast SEO.
SylvieTo handle redirections:
add_actions( 'template_redirect', 'fn' ); function fn() { wp_redirect( home_url( '/' ), 301 ); exit; }Sources:
- https://developer.wordpress.org/reference/functions/wp_redirect/
- https://developer.wordpress.org/reference/hooks/template_redirect/
-
Enqueuing styles hooks
Read more
Front + editor
enqueue_block_assetsEditor only
enqueue_block_editor_assetsSources:
-
Allow .svg import
Read more
add_filter('upload_mimes', 'dw__upload_mimes'); function dw__upload_mimes( $mimes=array() ){ $mimes['svg'] = 'image/svg+xml'; return $mimes; } -
Block rendering filter
Read more
add_filter( 'render_block', 'dev__paragraph_add_block', 10, 2 ); function dev__paragraph_add_block( $block_content, $block ){ if ( 'core/paragraph' === $block['blockName'] ){ $block_content = new WP_HTML_Tag_Processor( $block_content ); $block_content->next_tag(); /* first tag should always be ul or ol */ $block_content->add_class( 'wp-block-paragraph' ); $block_content->get_updated_html(); } return $block_content; } -
filter theme.json
Read more
There is a way to intervene on the generation of the css based on the theme.json file.
function update_with_dark_theme( $theme_json ){ $dark_theme = json_decode( file_get_contents( get_template_directory() . '/styles/dark.json' ), true ); return $theme_json->update_with( $dark_theme ); } add_filter( 'wp_theme_json_data_user', 'dsfr_update_with_dark_theme' );It can be used to switch the theme scheme for e.g.
function dsfr_reload_styles(){ if ( isset( $_GET['scheme'] ) && $_GET['scheme'] == 'dark' ){ add_filter( 'wp_theme_json_data_user', 'dsfr_update_with_dark_theme' ); } wp_enqueue_global_styles(); remove_action( 'wp_print_styles', 'print_emoji_styles' ); header( 'Content-type: text/css' ); wp_print_styles(); exit(); } add_action( 'wp_ajax_dsfr_reload_styles', 'dsfr_reload_styles' ); add_action( 'wp_ajax_nopriv_dsfr_reload_styles', 'dsfr_reload_styles' );Source : https://fullsiteediting.com/lessons/how-to-filter-theme-json-with-php/