WordPress – przydatne funkcje

  wordpress
Pobieranie wszystkich utworzonych menu
function get_all_wordpress_menus(){
   return get_terms( 'nav_menu', array( 'hide_empty' => true ) ); 
}

sprawdzanie, czy strona ma dzieci

function has_children($_id, $_post_type) {
    $children = get_posts( array( 'post_parent' => $_id, 'post_type' => $_post_type ) );

    if( count( $children ) == 0 ) {
        return false;
    } else {
        return true;
    }
}

szukanie najwyższego elementu nadrzędnego (najwyższego parenta)

function rootParent($post) {
    if ($post->post_parent)	{
        $ancestors=get_post_ancestors($post->ID);
        $root=count($ancestors)-1;
        $parent = $ancestors[$root];
    } else {
        $parent = $post->ID;
    }

    return $parent;
}

Pobranie rozszerzenia ze ścieżki

function getExtension($path) {
    return substr(strrchr($path, "."), 0);
}

Pobranie ID obrazka z jego adresu url

function get_image_id($image_url) {
    global $wpdb;
    $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url )); 
    return $attachment[0]; 
}

Dodawanie zadania do crona wp-cron

https://wordpress.edu.pl/wp-cron-poradzic-zadaniami-wordpressa/

Ograniczanie wyboru parenta parent select (jeszcze nie sprawdziłem)

https://stackoverflow.com/questions/40866430/custom-taxonomy-limit-parent-dropdown-depth

Wsparcie SVG

function cc_mime_types($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'cc_mime_types');

Oprócz tego każdy svg musi mieć na początku <?xml version=”1.0″ encoding=”UTF-8″?

Wyświetlanie svg jako jego zawartość

function getSvgContent($file) {
   $svgContent = file_get_contents($file);
   return $svgContent;
}

Ukrywanie zakładek w admin menu

add_action( 'admin_init', 'my_remove_menu_pages' );
function my_remove_menu_pages() {

global $user_ID;

if ( current_user_can( 'editor' ) && !current_user_can( 'administrator' ) ) {
        remove_menu_page( 'edit-comments.php' );
        remove_menu_page( 'themes.php' );
        remove_menu_page( 'plugins.php' );
        remove_menu_page( 'tools.php' );
        remove_menu_page( 'options-general.php' );
        remove_menu_page( 'edit.php?post_type=acf' );
        remove_menu_page( 'wpseo_dashboard' );
        remove_menu_page( 'loco' );
        remove_menu_page( 'metaslider' );
    }
}

Sprawdzanie, jak nazywa się zakładka w menu, żeby można ją było ukryć

add_action( 'admin_init', 'wpse_136058_debug_admin_menu' );
function wpse_136058_debug_admin_menu() {
    echo print_r( $GLOBALS[ 'menu' ], TRUE);
}

Możesz to echo zamknąć jeszcze w <pre> dla większej czytelności. W tablicy będzie to trzeci element (z indeksem 2)