TransWikia.com

How to check post type when using sanitize_title hook?

WordPress Development Asked by Michael Rogers on January 14, 2021

I’m hooking to sanitize_title.
How can i check if post being edited is page? I mean the type.

One Answer

As @Jacob mentioned, is an generic utility function used in many contexts and therefore, you might want to either use other approach or hook it selectively through other hook where you would have $post object (e.g. edit_post or other way to define if the post edited is of page type.

Something along these lines:

<?php
    // sanitizing function.
    function wpse341230_remove_false_words($slug) {
        if (!is_admin()) return $slug;
        $keys_false = array('a','and','above','the','also');
        $slug = explode ('-', $slug);
        $slug = array_diff($slug,$keys_false);
        return implode ('-', $slug);
    }

    // array of post types where sanitizing function should be hooked;
    $types = array(
        'page',
        'product',
    );

    // hook the following function a hook with $post object. e.g. edit_post or save_post.
    add_action('edit_post','wpse341230_hook_sanitize_title', 10, 2);

    // this function checks if the post type is one we want to sanitize the title.
    function wpse341230_hook_sanitize_title($post_ID, $post, $types){
        // if the $post->post_type property is in the array of types for sanitizing, hook the sanitizing function
        if( in_array($post->post_type, $types) ){
            add_filter('sanitize_title','wpse341230_remove_false_words');
        }
    }
?>

I would advise to check the available hooks in the Actions Run During an Admin Page Request section of this documentation page to check the typically available hooks for you.

Answered by Celso Bessa on January 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP