• 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

    • Funny enough, the aesthetic is pretty much the only thing I like from Windows 11 so I don't mind a distro that looks like it but the perks of it being Linux underneath. I'm usually a 'start with the base and build it myself' type Linux person but if a distro is close enough to what I'd likely set it to myself, no reason not to start with a good chunk of the work done for me.
    • Ignoring for the moment the bizarre claim that the new Outlook app is more "agile"... "Microsoft also mentions offline and PST (Outlook data/personal storage table) additions that are continuing to improve. The company is right in this regard as it recently confirmed another new offline feature for New Outlook. And PST file support is also here." This was the dealbreaker for me. If true, and if it works sanely, then "New" Outlook becomes viable. Still, gonna wait for the other shoe to drop...
    • Because Win7 was beautiful, much faster and more functional than XP. Win10 (glossing over 8 as many do) was slightly faster in some cases, more functional in some cases, but some people such as myself hated how it looked and decided it wasn't worth the upgrade. Some people liked (or were ok with) the look, and thus it is a good upgrade. Win11 is like 10, but is less functional between key features being removed and constant bugs/crashes either due to updates, or just things that were never patched. It literally has nothing going for it, and I use it every day at work so I'm quite familiar with it.
    • I switched my mom from Chrome to Firefox and she had a serious meltdown. She even managed to figure out how to reinstall Chrome, which really surprised me. What finally got her to switch was Chrome no longer being supported on Win7 and me putting a Chrome skin on FF, and setting it up identically.
    • Feels very much like most other gnome based Linux distros. There is minimal amounts that are influenced by Windows 11, maybe just enough to make people who are switching comfortable enough with the idea. As far as I can tell its mainly just turning the 'taskbar' panel as a 100% sized static panel, rather than the default dynamic sized. Turning it from the Mac OS Dock into the Windows taskbar. The Arc Menu - that I assume you're taking not with from the screenshots, is indeed the Windows 11 style one, but it has lots of other options too, from the more traditional gnome, Windows 7 etc. Still free to install what ever Window Manager you want once you're comfortable enough with Linux though.
  • Recent Achievements

    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
    • One Year In
      Bert Fershner earned a badge
      One Year In
    • Reacting Well
      ChrisOdinUK earned a badge
      Reacting Well
    • One Year In
      Steviant earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      548
    2. 2
      ATLien_0
      206
    3. 3
      +FloatingFatMan
      172
    4. 4
      Michael Scrip
      151
    5. 5
      Som
      136
  • Tell a friend

    Love Neowin? Tell a friend!