Category: WordPress

  • PLUGIN_CHECK_PHP_BIN constant

    The WordPress Plugin Review team released Plugin Check. They use it to scan all plugin submissions to wordpress.org, and encourage all authors to run it before uploading plugins to the directory.

    PLUGIN_CHECK_PHP_BIN Error Message

    One error asks us to create a constant:

    Cannot find the PHP Binary file, please define it using the `PLUGIN_CHECK_PHP_BIN` constant

    It’s asking for the path to PHP so it can scan plugin code. Here is some PHP code to create the constant with a sample value of “path/to/php”.

    if ( ! defined( 'PLUGIN_CHECK_PHP_BIN' ) ) {
    	define( 'PLUGIN_CHECK_PHP_BIN', 'path/to/php' );
    }

    How to Find the Path

    In your local environment or while logged into a remote server, use the whereis php command to reveal the path to the PHP binary. In this example from my computer, the path is not the only text output by the command:

    $ whereis php
    php: /opt/homebrew/opt/[email protected]/bin/php /opt/homebrew/share/man/man1/php.1
    

    Where to Run the Command

    If you’re on macOS, open Terminal, type or paste the whereis php command, and press Enter.

    Define the Constant in wp-config.php

    The path is very likely to end in bin/php. Here’s what I added to wp-config.php files running on my computer:

    if ( ! defined( 'PLUGIN_CHECK_PHP_BIN' ) ) {
    	define( 'PLUGIN_CHECK_PHP_BIN', '/opt/homebrew/opt/[email protected]/bin/php' );
    }

    Run the Plugin Check again. If you successfully created the constant with the correct path, your Plugin Check report may be a bit longer.

  • WordPress 6.3 Errors in Dashboard

    Sites running WordPress 6.3 and plugins that add the post__not_in query variable on the parse_query hook are breaking the lists of posts and pages in the Dashboard. I found this bug because I built and maintain a plugin that did exactly this.

    Example pages with errors after updating to WordPress 6.3

    • wp-admin/edit.php
    • wp-admin/edit.php?post_type=page
    • wp-admin/edit.php?post_type={custom_post_type}

    Why?

    The post__not_in query variable makes it easy for developers to hide posts and pages from dashboard users. The parse_query hook is one of the last hooks before the main query runs, and a handful of hide-page-tutorials recommend using it to exclude specific posts or pages from the query.

    How to Fix

    Follow this advice: Avoid post__not_in

    How to find out if a plugin is causing the errors

    Disable all plugins one at a time and check the broken pages. This is the way to troubleshoot almost every problem on a WordPress site. If you cannot deactivate all plugins for this plugin conflict test, create a duplicate copy of the site to use during the test.