• 0

Why WordPress codebase is so horrible?


Question

From the user's perspective, Wordpress is hands down the best CMS out there. The UI, the menu organization, ability to toggle friendly permalinks on the fly and plethora of plugins makes it quite good.

But it's codebase is horrible. More I look at its code, all I see is sphagetti mess. I'm not sure how anyone would be ok with such a mess. Here's an example of the type of nightmare I'm talking about:

Source: https://github.com/WordPress/WordPress/blob/master/wp-activate.php

/**
 * Loads styles specific to this page.
 *
 * @since MU
 */
function wpmu_activate_stylesheet() {
    ?>
    <style type="text/css">
        form { margin-top: 2em; }
        #submit, #key { width: 90%; font-size: 24px; }
        #language { margin-top: .5em; }
        .error { background: #f66; }
        span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: bold; }
    </style>
    <?php
}
add_action( 'wp_head', 'wpmu_activate_stylesheet' );
get_header( 'wp-activate' );
?>

<div id="signup-content" class="widecolumn">
    <div class="wp-activate-container">
    <?php if ( empty($_GET['key']) && empty($_POST['key']) ) { ?>

        <h2><?php _e('Activation Key Required') ?></h2>
        <form name="activateform" id="activateform" method="post" action="<?php echo network_site_url('wp-activate.php'); ?>">
            <p>
                <label for="key"><?php _e('Activation Key:') ?></label>
                <br /><input type="text" name="key" id="key" value="" size="50" />
            </p>
            <p class="submit">
                <input id="submit" type="submit" name="Submit" class="submit" value="<?php esc_attr_e('Activate') ?>" />
            </p>
        </form>

    <?php } else {
        $key = !empty($_GET['key']) ? $_GET['key'] : $_POST['key'];
        $result = wpmu_activate_signup( $key );
        if ( is_wp_error($result) ) {
            if ( 'already_active' == $result->get_error_code() || 'blog_taken' == $result->get_error_code() ) {
                $signup = $result->get_error_data();
                ?>
                <h2><?php _e('Your account is now active!'); ?></h2>
                <?php
                echo '<p class="lead-in">';
                if ( $signup->domain . $signup->path == '' ) {
                    printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
                } else {
                    printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
                }
                echo '</p>';
            } else {
                ?>
                <h2><?php _e('An error occurred during the activation'); ?></h2>
                <?php
                echo '<p>'.$result->get_error_message().'</p>';
            }
        } else {
            $url = isset( $result['blog_id'] ) ? get_blogaddress_by_id( (int) $result['blog_id'] ) : '';
            $user = get_userdata( (int) $result['user_id'] );
            ?>
            <h2><?php _e('Your account is now active!'); ?></h2>

            <div id="signup-welcome">
                <p><span class="h3"><?php _e('Username:'); ?></span> <?php echo $user->user_login ?></p>
                <p><span class="h3"><?php _e('Password:'); ?></span> <?php echo $result['password']; ?></p>
            </div>

            <?php if ( $url && $url != network_home_url( '', 'http' ) ) :
                switch_to_blog( (int) $result['blog_id'] ); 
                $login_url = wp_login_url(); 
                restore_current_blog(); 
                ?>
                <p class="view"><?php printf( __( 'Your account is now activated. <a href="%1$s">View your site</a> or <a href="%2$s">Log in</a>' ), $url, esc_url( $login_url ) ); ?></p>
            <?php else: ?>
                <p class="view"><?php printf( __('Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?></p>
            <?php endif;
        }
    }
    ?>
    </div>
</div>
<script type="text/javascript">
    var key_input = document.getElementById('key');
    key_input && key_input.focus();
</script>
<?php get_footer( 'wp-activate' );

 

Whether you are making your own software or contributing to another one, wouldn't you want other's codes to be more readable and well organized?

Can you tell me why it's an acceptable practice in the Wordpress community?

11 answers to this question

Recommended Posts

  • 0

Wordpress wants to be everything for everyone every time. You can imagine how that tends to work out.

The code structure itself that you posted above isn't that bad. At least it's indented properly. Could use a LOT more comments though.

  • Like 1
  • 0

Because 80% of all Wordpress "developers" share these "qualities":

  • They have between 3 to 6 months of experience and use titles like "Senior Web Developer Developers with vast experience" (freelancing websites are full of them)
  • Concepts like MVC, OOP, separation between logic and presentation, etc. are beyond their understanding and can't understand anything more complicated than "echo 'Hello World'; "
  • Laziness...why build a proper web app or website when you can just throw in some free plugins and themes and call it a website?

 

  • 0
  On 06/11/2015 at 15:02, john_alex said:

Because 80% of all Wordpress "developers" share these "qualities":

  • They have between 3 to 6 months of experience and use titles like "Senior Web Developer Developers with vast experience" (freelancing websites are full of them)
  • Concepts like MVC, OOP, separation between logic and presentation, etc. are beyond their understanding and can't understand anything more complicated than "echo 'Hello World'; "
  • Laziness...why build a proper web app or website when you can just throw in some free plugins and themes and call it a website?

 

He is talking about the CMS code base, not a garbage site built with it.

  • 0
  On 06/11/2015 at 15:03, adrynalyne said:

He is talking about the CMS code base, not a garbage site built with it.

And that poor excuse of a codebase is not garbage?

I understand that fixing this would  require a full rewrite but they're not even trying.

  • 0
  On 06/11/2015 at 15:05, john_alex said:

And that poor excuse of a codebase is not garbage?

I understand that fixing this would  require a full rewrite but they're not even trying.

I didn't say it wasn't. However, going on about web developers with building proper web apps and just tossing in plugins for features is not what he was talking about. You two were discussing different things.

  • 0
  On 06/11/2015 at 15:07, adrynalyne said:

I didn't say it wasn't. However, going on about web developers with building proper web apps and just tossing in plugins for features is not what he was talking about. You two were discussing different things.

At the risk of sounding snarky, there is a simple economy available here - both questions actually have the same answer

Answer: It's PHP.

 

  • 0
  On 09/11/2015 at 05:08, _Alexander said:

Well ... it is definitely hard to read that considering it is a mix of frontend and backend code...

Using a function that contains frontend and backend code is not the end of the world. Visually, it's a good practice to separate the backend code from the front-end. If they at least used the heredoc syntax to separate the front-end from the backend logic or concatenate strings, etc, It would be much easier to dissect what the heck is going on.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • They need to refactor their internal code to remove .NET Framework and third party libraries. Use .NET 10 or Rust. Stop bundling AI crap, it does not work.
    • Liberals have been , since the ‘60s, declaring that all you need is peace and love. At least until Trump ran for office. After that they have been letting out 50 years of repressed hatred. That’s all they really are anymore, angry and hateful. 
    • Zen Browser 1.14.6b by Razvan Serea Zen Browser is a privacy-focused, open-source web browser built on Mozilla Firefox, offering users a secure and customizable browsing experience. It emphasizes privacy by blocking trackers, ads, and ensuring your data isn't collected. With Zen Mods, users can enhance their browser experience with various customization options, including features like split views and vertical tabs. The browser is designed for efficiency, providing fast browsing speeds and a lightweight interface. Zen Browser prioritizes user control over the browsing experience, offering a minimal yet powerful alternative to traditional web browsers while keeping your online activity private. Zen Browser’s DRM limitation Zen Browser currently lacks support for DRM-protected content, meaning streaming services like Netflix and HBO Max are inaccessible. This is due to the absence of a Widevine license, which requires significant costs and is financially unfeasible for the developer. Additionally, applying for this license would require Zen to be part of a larger company, similar to Mozilla or Brave. Therefore, DRM-protected media won't be supported in Zen Browser for the foreseeable future. Zen Browser offers features that improve user experience, privacy, and customization: Privacy-Focused: Blocks trackers and minimizes data collection. Automatic Updates: Keeps the browser updated with security patches. Zen Mods: Customizable themes and layouts. Workspaces: Organize tabs into different workspaces. Compact Mode: Maximizes screen space by minimizing UI elements. Zen Glance: Quick website previews. Split Views: View multiple tabs in the same window. Sidebar: Access bookmarks and tools quickly. Vertical Tabs: Manage tabs vertically. Container Tabs: Separate browsing sessions. Fast Profile Switcher: Switch between profiles easily. Tab Folders: Organize tabs into folders. Customizable UI: Personalize browser interface. Security Features: Inherits Firefox’s robust security. Fast Performance: Lightweight and optimized for speed. Zen Mods Customization: Deep customization with mods. Quick Access: Easy access to favorite websites. Open Source: Built on Mozilla Firefox with community collaboration. Community-Driven: Active development and feedback from users. GitHub Repository: Contribute and review the source code. Zen Browser 1.14.6b changelog: Security Various security fixes New Features Updated to Firefox 141.0 Improved accent color detection, making elements such as toasts more vibrant. Added a better custom color picker (experimental UI, might change) Improved and optimized glance animations and UI WebGPU is now enabled by default on windows Added a more native feel to windows 11 window buttons Fixes picture caching and scroll optimization issues a bug where adding or removing colors in the color picker would make the UI white On Linux, Zen uses less memory and no longer requires a forced restart after an update has been applied by a package manager. Fixed 'copy calculation' in the urlbar not working Download: Zen Browser | 82.3 MB (Open Source) Download: Zen Browser ARM64 | Other Operating Systems View: Zen Browser Home Page | Screenshots 1 | 2 | Reddit Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • You reap as you sow - he enabled hate, so he can receive a level of it.
    • It is informal speech, it just means to get rid of whatever is preinstalled on the disk. The steps you mentioned in one of your posts are enough, there is no need to overwrite the disk with zeros, random patterns, etc., deleting the existing partitions and installing Windows anew suffices. Even if you wanted to recover data from whatever was there previously, I wager you wouldn't be able to because of how SSDs work (if you want to know more about it, look for TRIM in that context). It is likely the drive doesn't have just 1 partition like you said though, 2-3 would be standard (EFI/boot, Windows, Recovery, maybe even a small reserved one), but you can remove them all during installation: - Press Shift+F10 once Setup appears when booting from the Windows installation media, a command line window should appear. - Run "diskpart" (type it, press Enter), list the disks attached to the machine and select the internal one, the one you want to clean. - Once selected, type "clean" followed by Enter, there'd be nothing on that drive afterwards. Type "exit" to quit DiskPart, and you can close that CMD and continue with Windows installation as usual. It should be something like this: Just beware of which disk you select before cleaning, you can use "detail disk" after selecting one to get some details about it.   Yes, if you install Windows from scratch from known-good installation media you can rest easy about that. Firmware rootkits or similar would still be there if they were, but I don't think you should worry.   It depends on who you ask, I'd say most people find it to be enough; a full scan after installing Windows shouldn't produce any positive result. Like Nik said, absolute certainty is not something that can be attained, but one can be confident enough.
  • Recent Achievements

    • Dedicated
      Snake Doc earned a badge
      Dedicated
    • One Month Later
      Philsl earned a badge
      One Month Later
    • One Year In
      armandointerior640 earned a badge
      One Year In
    • One Month Later
      armandointerior640 earned a badge
      One Month Later
    • Week One Done
      Itbob513626 earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      613
    2. 2
      ATLien_0
      236
    3. 3
      Xenon
      156
    4. 4
      +FloatingFatMan
      123
    5. 5
      Michael Scrip
      113
  • Tell a friend

    Love Neowin? Tell a friend!